如何将VSTS .lib转换为MinGW .a?

我有一个用Visual Studio编译的静态库,我想从MinGW链接到它。

我尝试更改后缀但是我得到了一堆警告: Warning: .drectve /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized

还有一些错误,包括: ./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to./libetpan.a(Release_ssl/mailimap.obj):(.text[_mailimap_noop]+0x7): undefined reference to ___ security_cookie’`。

任何帮助是极大的赞赏。

您可以尝试将.lib转换为.a

http://code.google.com/p/lib2a/

.lib和.a的格式不同。 更改文件扩展名是链接器,这就是它无法正常工作的原因。

如果它是一个32位的库,你试图链接,它应该“正常工作”。 MinGW支持32位.lib文件。 如果没有,请提交错误报告。

如果它是64位库,并且您正在使用MinGW-w64或基于它的东西(如TDM-GCC 64位版本),请参阅MinGW-w64 FAQ条目 :

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