Erstellen einer MSVC-Importbibliothek aus einer DLL, die stdcall verwendet
Ich habe eine DLL, die exportiert
extern "C" __declspec(dllexport) int __stdcall Foo( void );
Ein Dump der DLL zeigt
******************************************************************************
Section: Exports
File Offset: 00001400 (5120)
Flags: 00000000
Time Stamp: 00000000
Major Version: 0000
Minor Version: 0000
Exports from simple.dll
3 exported name(s), 3 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00002104 3 0000 std::nothrow
00001258 2 0001 Foo
000020F8 1 0002 ___CPPdebugHook
******************************************************************************
Ich habe mit der folgenden def-Datei begonnen:
LIBRARY simple.dll
EXPORTS
Foo
Dadurch wurde eine lib-Datei mit den folgenden Exporten erstellt:
Exports
ordinal name
_Foo
Wenn ich mit dieser Bibliothek verlinke, beschwert sich der msvc-Linker, dass er _Foo @ 0 nicht finden kann. Um dieses Problem zu beheben, habe ich der def-Datei einen Alias hinzugefügt.
LIBRARY simple.dll
EXPORTS
Foo
Foo@0=Foo
Was zu einer lib-Datei mit Exporten führt
Exports
ordinal name
_Foo
_Foo@0
Jetzt ist das Projekt ohne Probleme verlinkt. Wenn ich jedoch versuche, es auszuführen, erhalte ich die Nachricht
"Der Prozedur-Einstiegspunkt Foo @ 0 konnte nicht in der Dynamic Link Library simple.dll gefunden werden."
Obwohl ich lib.exe mitgeteilt habe, dass Foo @ 0 ein Alias für Foo ist, wird dennoch eine Importbibliothek erstellt, die versucht, "Foo @ 0" nach Namen zu laden.
Gibt es eine Möglichkeit, die Importbibliothek zum Laden von "Foo" zu bewegen, wenn ich nach "Foo @ 0" gefragt habe?
Vielen Dank,
David