Import-Library für dll mit MinGW erstellen
-
Salve,
ich habe eine kleine dll, für die ich gerne eine Import-Library erstellen möchte. Bis auf die Imp.Lib funktioniert alles bestens, ich erstelle die dll mit:
g++ -c dll.cpp
g++ -shared dll.o -o dll.dllSo weit so gut. Wenn ich aber nun mit
g++ -shared dll.o -o dll.dll --out-implib dll.a
linken will, bekomme ich die Fehlermeldung
dll.a: No such file or directoryWie kann ich eine Import-Library erzeugen?
-
da musn komma hinter
-
Also weder mit:
... --out-implib,dll.a
noch mit:
... --out-implib,dll.a,
bekomme ich eine dll.a erzeugt. Gelinkt wird zwar, aber wie gesagt, keine Import-Library erstellt.
Könntest Du mir die genaue vollständige Syntax bitte einmal aufschreiben?Und dann habe ich gleich noch eine Frage:
Eine DllMain scheint nicht gebraucht/benutzt/aufgerufen zu werden. Wie könnte ich bei Bedarf dafür sorgen, daß erforderliche Initialisierungen beim Laden der DLL durchgeführt werden?
-
Da --out-implib eine Linkeroption ist, musst Du dem Compiler mitteilen, dass die nicht für ihn gedacht ist. Linkeroptionen beim gcc übergibst Du mitelt -Wl,<option>. In diesem Fall also:
-Wl,--out-implib=dll.a
Das Gleichheitszeichen zwischen out-implib und dem Namen ist erforderlich, da pro -Wl nur eine Option an den Linker übergeben wird. Alternativ (ohne Gleichheitsszeichen) ginge das auch noch so:
-Wl,--out-implib -Wl,dll.a
-
Super! Vielen Dank, so geht es.
Hat evtl. noch jemand Hinweise zu dem Punkt mit der DllMain()?
-
Deklariere die DLLMain als extern "C".
Dann funzt das :).
rya.
-
Ganz reizend!
Woher wißt Ihr das nur immer alles? Und wieso weiß ich das nie?
Naja,
herzlichen Dank an Euch alle!