Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
nie można wygenerować ciągu p/invoke dla decorated_name "function_declaration" ; brak konwencji wywoływania w metadanych
Uwagi
Podczas próby zaimportowania funkcji natywnej do czystego obrazu należy pamiętać, że niejawne konwencje wywoływania różnią się między kompilacjami natywnymi i czystymi. Aby uzyskać więcej informacji na temat czystych obrazów, zobacz Pure and Verifiable Code (C++/CLI).
Opcja /clr:pure compiler jest przestarzała w programie Visual Studio 2015 i nieobsługiwana w programie Visual Studio 2017.
Przykłady
Ten przykład kodu generuje składnik z wyeksportowaną, natywną funkcją, której konwencja wywoływania jest niejawnie __cdecl.
// LNK2031.cpp
// compile with: /LD
extern "C" {
__declspec(dllexport) int func() { return 3; }
};
Poniższy przykład tworzy czystego klienta, który korzysta z funkcji natywnej. Jednak konwencja wywoływania w / clr:pure jest __clrcall. Poniższy przykład generuje LNK2031.
// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();
int main() {
return func();
}
W poniższym przykładzie pokazano, jak korzystać z funkcji natywnej na podstawie czystego obrazu. Zanotuj specyfikator jawnej __cdecl konwencji wywoływania.
// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();
int main() {
return func();
}