Delen via


Compilerfout C3642

'return_type/args': kan geen functie oproepen met de __clrcall-aanroepconventie vanuit eigen code

Opmerkingen

Een functie die is gemarkeerd met de __clrcall aanroepende conventie kan niet worden aangeroepen vanuit systeemeigen (onbeheerde) code.

return_type/args is de naam van de functie of het type van de __clrcall functie die u probeert aan te roepen. Een type wordt gebruikt wanneer u een functiepointer aanroept.

Als u een beheerde functie wilt aanroepen vanuit een systeemeigen context, kunt u een wrapper-functie toevoegen waarmee de __clrcall functie wordt aangeroepen. U kunt ook het CLR-marshalingmechanisme gebruiken; zie Instructies voor: Function Pointers marshalen met PInvoke voor meer informatie.

Example

In het volgende voorbeeld wordt C3642 gegenereerd:

// 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
}