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.dll

    So 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 directory

    Wie 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!


Log in to reply