2012-08-03 13 views
5

Mam statyczną bibliotekę skompilowaną przy użyciu Visual Studio i chcę połączyć ją z MinGW.Jak mogę przekonwertować plik VSTS .lib na MinGW .a?

Próbowałem zmienić sufiks, ale otrzymuję masę ostrzeżeń takich jak: Warning: .drectve /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized.

Również kilka błędów, w tym: ./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to ___ security_cookie'`.

Każda pomoc jest bardzo doceniana.

Odpowiedz

3

lib i .a nie są tym samym formacie. Zmiana rozszerzenia pliku leży na linkerze, dlatego nie działa.

Jeśli jest to biblioteka 32-bitowa, którą próbujesz połączyć, powinna "po prostu działać". MinGW obsługuje 32-bitowe pliki .lib. Jeśli nie, zgłoś zgłoszenie błędu.

Jeśli jest to biblioteki 64-bitowe, a używasz MinGW-W64 lub coś oparte na nim (jak TDM-GCC w wersji 64-bitowej) Patrz MinGW-w64 FAQ entry:

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