Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
incapaz de gerar p/invoke para "function_declaration" decorated_name; Convenção de chamada ausente nos metadados
Observações
Ao tentar importar uma função nativa para uma imagem pura, lembre-se de que as convenções de chamada implícitas diferem entre compilações nativas e puras. Para obter mais informações sobre imagens puras, consulte Código puro e verificável (C++/CLI).
A opção de compilador /clr:pure foi preterida no Visual Studio 2015 e não tem suporte no Visual Studio 2017.
Examples
Este exemplo de código gera um componente com uma função exportada, nativa, cuja convenção de chamada é implicitamente __cdecl.
// LNK2031.cpp
// compile with: /LD
extern "C" {
__declspec(dllexport) int func() { return 3; }
};
O exemplo a seguir cria um cliente puro que consome a função nativa. No entanto, a convenção de chamada em /clr:pure é __clrcall. O exemplo a seguir gera LNK2031.
// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();
int main() {
return func();
}
O exemplo a seguir mostra como consumir a função nativa de uma imagem pura. Observe o especificador explícito de convenção de chamada __cdecl.
// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();
int main() {
return func();
}