Linkertoolfehler LNK2031
P/Invoke für "function_declaration"-decorated_name konnte nicht generiert werden. Aufrufkonvention fehlt in Metadaten
Hinweise
Beachten Sie beim Versuch, eine systemeigene Funktion in ein reines Bild zu importieren, dass sich die impliziten Aufrufkonventionen zwischen nativen und reinen Kompilierungen unterscheiden. Weitere Informationen zu reinen Bildern finden Sie unter Pure and Verifiable Code (C++/CLI).For more information about pure images, see Pure and Verifiable Code (C++/CLI).
Die Option "/clr:pure compiler" ist in Visual Studio 2015 veraltet und wird in Visual Studio 2017 nicht unterstützt.
Beispiele
In diesem Codebeispiel wird eine Komponente mit einer exportierten, nativen Funktion generiert, deren Aufrufkonvention implizit __cdecl wird.
// LNK2031.cpp
// compile with: /LD
extern "C" {
__declspec(dllexport) int func() { return 3; }
};
Im folgenden Beispiel wird ein reiner Client erstellt, der die systemeigene Funktion verwendet. Die Aufrufkonvention unter "/clr:pure " ist jedoch __clrcall. Im folgenden Beispiel wird LNK2031 generiert.
// LNK2031_b.cpp
// compile with: /clr:pure LNK2031.lib
// LNK2031 expected
extern "C" int func();
int main() {
return func();
}
Das folgende Beispiel zeigt, wie die systemeigene Funktion aus einem reinen Bild verwendet wird. Beachten Sie den expliziten __cdecl
Aufrufkonventionsbezeichner.
// LNK2031_c.cpp
// compile with: /clr:pure LNK2031.lib
extern "C" int __cdecl func();
int main() {
return func();
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für