Sdílet prostřednictvím


Chyba kompilátoru C3642

'return_type/args': nelze volat funkci s __clrcall konvencí volání z nativního kódu

Poznámky

Funkci označenou konvencí volání __clrcall nelze volat z nativního (nespravovaného) kódu.

return_type/args je název funkce nebo typ __clrcall funkce, kterou se pokoušíte volat. Typ se používá při volání ukazatelem funkce.

Pokud chcete volat spravovanou funkci z nativního kontextu, můžete přidat funkci obálky, která funkci zavolá __clrcall . Nebo můžete použít mechanismus zařazování CLR; Viz Postupy: Zařazování ukazatelů na funkce pomocí PInvoke další informace.

Example

Následující příklad generuje 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
}