2012-08-03 2 views
5

Ich habe eine statische Bibliothek mit Visual Studio kompiliert und ich möchte es von MinGW verknüpfen.Wie kann ich eine VSTS .lib in eine MinGW .a konvertieren?

Ich habe versucht, das Suffix zu ändern, aber ich bekomme eine Reihe von Warnungen wie: Warning: .drectve /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized.

Auch ein paar Fehler einschließlich: ./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to ___ security_cookie'`.

Jede Hilfe wird sehr geschätzt.

Antwort

3

LIB und .a sind nicht das gleiche Format .A. Das Ändern der Dateierweiterung liegt beim Linker, weshalb es nicht funktioniert.

Wenn es sich um eine 32-Bit-Bibliothek handelt, die Sie verknüpfen möchten, sollte sie "einfach funktionieren". MinGW unterstützt 32-Bit-LIB-Dateien. Wenn dies nicht der Fall ist, reichen Sie einen Fehlerbericht ein.

Wenn es eine 64-Bit-Bibliothek, und Sie sind mit MinGW-w64 oder etwas auf ihr basiert (wie die TDM-GCC 64-Bit-Version) finden Sie in der MinGW-w64 FAQ entry:

gendef mylib.dll 
dlltool --as-flags=--64 -m i386:x86-64 -k --output-lib libmylib.a --input-def mylib.def