Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
"return_type/args": не удается вызвать функцию с соглашением о вызове __clrcall из машинного кода
Замечания
Функция, помеченная __clrcall соглашение о вызовах, не может вызываться из собственного кода (неуправляемого).
return_type/args — это имя функции или тип вызываемой __clrcall функции. Тип используется при вызове указателя функции.
Чтобы вызвать управляемую функцию из собственного контекста, можно добавить функцию-оболочку, которая вызовет функцию __clrcall . Кроме того, можно использовать механизм маршаллинга СРЕДЫ CLR; Дополнительные сведения см. в статье "Практическое руководство. Маршал указателей функций с помощью PInvoke ".
Example
Пример ниже вызывает ошибку C3642:
// C3642.cpp
// compile with: /clr
using namespace System;
struct S {
void Test(String ^ s) { // CLR type in signature, implicitly __clrcall
Console::WriteLine(s);
}
void Test2(char * s) {
Test(gcnew String(s));
}
};
#pragma unmanaged
int main() {
S s;
s.Test("abc"); // C3642
s.Test2("abc"); // OK
}