Partilhar via


Erro do compilador C3642

'return_type/args' : não é possível chamar uma função com a convenção de chamada __clrcall desde o código nativo

Observações

Uma função marcada com a convenção de chamada __clrcall não pode ser chamada a partir de código nativo (não gerenciado).

return_type/args é o nome da função ou o tipo da função que __clrcall você está tentando chamar. Um tipo é usado quando você está chamando por meio de um ponteiro de função.

Para chamar uma função gerida de um contexto nativo, pode adicionar uma função "envolvente" que chamará a função __clrcall. Ou, pode utilizar o mecanismo de marshalização do CLR; consulte Como: Marcar Ponteiros de Função com o Uso de PInvoke para obter mais informações.

Example

O exemplo a seguir gera 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
}