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

时间:2012-08-03 09:53:03

标签: c visual-studio static linker mingw

我有一个用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 ___ security_cookie'`。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您可以尝试使用

将.lib转换为.a

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

答案 1 :(得分:3)

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

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

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

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