.lib / .a-Dateien für MinGW

OP #3924182
Lesenswert?

Hallo zusammen,

ich nutze MinGW als Matlab-MEX-Compiler unter Windows. Für die 
Fragestellung ist das vermutlich nicht von Belang - hier reicht es 
vermutlich, MinGW als C-Compiler unter Windows (7x64) zu betrachten.

Ich habe DLLs, die für die Verwendung mit dem Microsoft-Visual 
C-Compiler vorbereitet sind, d.h. es liegt eine .dll und eine .lib vor. 
Ich will sie aber mit dem MinGW nutzen, der mit .lib-Dateien nichts 
anfangen kann. (Irgendwie kann er das schon- er frisst die Dateien und 
beschwert sich nicht mehr, daß die Symbolnamen fehlen. Allerdings 
erzeugt das fertige Binary eine Speicherschutzverletzung).

Lade ich die DLL "ganz normal" dynamisch mit LoadLibrary+GetProcAddress 
läuft alles Paletti- allerdings ist das ganz schön viel Schreibarbeit. 
Gibt es eine Möglichkeit, aus .lib und .dll eine Headerdatei zu 
erzeugen, die MinGw versteht?

Viele Grüße
W.T.
Persönliche Seite #3924327
Lesenswert?

Walter Tarpan schrieb:
> Gibt es eine Möglichkeit, aus .lib und .dll eine Headerdatei zu
> erzeugen, die MinGw versteht?

Eine Headerdatei brauchst Du nicht, die hat mit dem Problem nichts zu 
tun.

Du brauchst "nur" eine andere Importlibrary für die DLL, und die 
müsstest Du Dir sogar selbstbauen können:

http://www.mingw.org/wiki/createimportlibraries
Gast #3924578
Lesenswert?

Rufus Τ. Firefly schrieb:
> Eine Headerdatei brauchst Du nicht, die hat mit dem Problem nichts zu
> tun.
>
> Du brauchst "nur" eine andere Importlibrary für die DLL, und die
> müsstest Du Dir sogar selbstbauen können:
>
> http://www.mingw.org/wiki/createimportlibraries

Hallo Rufus,
danke für die Antwort. Ja, Du hast Recht, ich brauche nur irgendeine 
Beschreibung, die dem Linker sagt, in welcher DLL er die Symbolnamen 
findet. Das DLLtool sollte hier das richtige sein. Zumal die besagten 
DLLs mit dem DependencyWalker ihre Symbolnamen korrekt preisgeben.

Vielen Dank
W.T.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren