我正在尝试使用xlsLib从C ++应用程序创建Excel电子表格。
麻烦的是编译xlsLib,我给了一个.a文件(由MinGW生成的GCC静态库)。但是,我的应用程序依赖于另一个仅使用Visual Studio编译的API(PhysX
)。
因此:是否可以将GCC静态库(xlslib.a
)转换为Visual Studio静态库文件(xlslib.lib
)?
答案 0 :(得分:33)
使用MinGW生成的静态库的归档通常与Visual C ++编译器/链接器兼容。因此,您应该能够通过将.a
文件添加到Visual Studio中项目属性中的链接器输入来直接使用它们:
Properties
(Alt-F7)。Configuration Properties->Linker->Input
.a
档案的列表libgcc.a
库此外,混合C运行时库properties of C/C++->Code Generation->Runtime Library
可能会出现问题,但这取决于您与MinGW一起使用的构建配置。有时需要从MinGW链接libmsvcrt.a
,但在许多(如果不是大多数)情况下,它会导致问题。
最后,这个混合的MinGW和Visual C ++链接通常可以工作,但对于C模块而言,据我所知,它不适用于C ++。
答案 1 :(得分:4)
但是使用.a会导致我的.exe无法调试"无法找到调试信息"。 - 熵5月22日12:27
这是因为.a库不包含调试所需的调试信息。如果要调试它,你需要告诉编译器在编译时添加调试信息。对于mingw,你需要添加" -g
"运行" make
",以及" make CFLAGS="-g"
"
答案 2 :(得分:0)
以下是我认为有用的两种资源:
[snip,错误链接]
http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html
编辑。我找不到我想要的链接。同时,请检查一下:http://www.willus.com/mingw/yongweiwu_stdcall.html
答案 3 :(得分:-1)
据我所知,他们是一回事。 Visual Studio的.lib
文件也是包含目标文件的ar
个档案。你试过重命名文件了吗? :)