6

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

任何帮助是极大的赞赏。

4

2 回答 2

5

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

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

于 2012-08-14T23:54:31.687 回答
5

.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
于 2013-07-14T20:37:07.723 回答