Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
no se puede generar p/invoke para "function_declaration" decorated_name; falta la convención de llamada en los metadatos
Comentarios
Al intentar importar una función nativa en una imagen pura, recuerde que las convenciones de llamada implícitas difieren entre compilaciones nativas y puras. Para más información sobre las imágenes puras, consulte Código puro y comprobable (C++/CLI).
La opción del compilador /clr:pure está en desuso en Visual Studio 2015 y no se admite en Visual Studio 2017.
Ejemplos
Este ejemplo de código genera un componente con una función nativa exportada cuya convención de llamada es implícita __cdecl.
// LNK2031.cpp
// compile with: /LD
extern "C" {
__declspec(dllexport) int func() { return 3; }
};
En el ejemplo siguiente se crea un cliente puro que consume la función nativa. Sin embargo, la convención de llamada en /clr:pure es __clrcall. En el ejemplo siguiente se genera LNK2031.
// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();
int main() {
return func();
}
En el ejemplo siguiente se muestra cómo consumir la función nativa de una imagen pura. Tenga en cuenta el especificador de convención de llamada __cdecl explícita.
// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();
int main() {
return func();
}