Heim > Backend-Entwicklung > C++ > Wie exportiere ich C-DLL-Funktionen ohne Namensdekoration?

Wie exportiere ich C-DLL-Funktionen ohne Namensdekoration?

Mary-Kate Olsen
Freigeben: 2024-11-27 16:07:14
Original
906 Leute haben es durchsucht

How to Export C   DLL Functions without Name Decoration?

Export von dekorierten C-DLL-Namen

Sie haben festgestellt, dass beim Exportieren von Funktionsnamen aus einer C-DLL unter Verwendung einer Moduldefinition (.def) Datei oder der externen „C“ __declspec(dllexport)-Syntax im C-Stil werden die exportierten Funktionsnamen mit zusätzlichen Informationen versehen. Dies liegt an der C-Namensverzerrung, einem Prozess, der Informationen über Funktionsparameter und -typen in den Funktionsnamen kodiert.

Um diese zusätzliche Dekoration zu entfernen, können Sie die Kommentar-Compiler-Direktive #pragma verwenden. Indem Sie die folgende Zeile zu Ihrem Code hinzufügen:

#pragma comment(linker, "/EXPORT:SomeFunction=_SomeFunction@@@23mangledstuff#@@@@")
Nach dem Login kopieren

Sie können den dekorierten Namen für die Funktion angeben, die Sie exportieren möchten. In diesem Fall ist „SomeFunction@@@23mangledstuff#@@@@“ der dekorierte Name für die Funktion „SomeFunction“.

Alternativ können Sie das folgende Pragma verwenden, um den dekorierten Namen automatisch zu generieren:

#pragma comment(linker, "/EXPORT:\"" __FUNCTION__ ""= "" __FUNCDNAME__)
Nach dem Login kopieren

Dieses Pragma verwendet die FUNCTION und FUNCDNAME Makros zum Einfügen des Funktionsnamens und seiner dekorierten Version in das Pragma.

Die Verwendung eines dieser Pragmas führt bei der Anzeige mit dumpbin.exe zur folgenden Ausgabe:

SomeFunction
Nach dem Login kopieren

Mit dieser Methode können Sie die Funktionalität exportierter Funktionen beibehalten und gleichzeitig unerwünschte Verzierungen in den Funktionsnamen entfernen.

Das obige ist der detaillierte Inhalt vonWie exportiere ich C-DLL-Funktionen ohne Namensdekoration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage