VC ++ verhindert alle Symbolnamen-Dekorationen

8

Ich arbeite an einer DLL, die von einer anderen Sprache benutzt wird (also keine libs importiert und die Header der DLL enthält), indem ich die Aufrufkonvention _stdcall verwende. Das Problem ist, dass VC ++ bei seinen exportierten Symbolen immer eine Namensdekoration zu machen scheint. Alle Referenzen, die ich gesehen habe, benutzen extern "C", aber das scheint mir immer noch einen führenden Unterstrich und ein @ plus eine Zahl nach dem exportierten Namen zu hinterlassen.

Das schlimmste Bit ist das automatische Laden von Erweiterungs-DLLs in der Zielsprache im Wesentlichen "func_name = GetProcAddress (dll," func_name ")", so dass die Verwendung eines undekorierten Namens GetProcAddress fehlschlägt und den dekorierten Namen beschuldigt Variablenname (@ ist nicht erlaubt): (

Wie kann ich mit VC ++ etwas ohne Namensdekorationen exportieren?

%Vor%

dumpbin.exe

  

00011366 _test @ 8 = @ ILT + 865 (_test @ 8)

    
SyncViews 11.07.2011, 11:42
quelle

1 Antwort

6

Sie können eine .def-Datei verwenden. Dadurch können Sie die Funktionen ohne die Dekorationen exportieren.

Lesen: Exportieren von einer DLL mit DEF-Dateien

    
eran 11.07.2011, 11:47
quelle