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)
Tags und Links c++ dll stdcall name-decoration name-mangling