从MinGW静态库(.a)到Visual Studio静态库(.lib)

时间:2010-01-19 19:43:55

标签: visual-studio static mingw

我正在尝试使用xlsLib从C ++应用程序创建Excel电子表格。

麻烦的是编译xlsLib,我给了一个.a文件(由MinGW生成的GCC静态库)。但是,我的应用程序依赖于另一个仅使用Visual Studio编译的API(PhysX)。

因此:是否可以将GCC静态库(xlslib.a)转换为Visual Studio静态库文件(xlslib.lib)?

4 个答案:

答案 0 :(得分:33)

使用MinGW生成的静态库的归档通常与Visual C ++编译器/链接器兼容。因此,您应该能够通过将.a文件添加到Visual Studio中项目属性中的链接器输入来直接使用它们:

  1. 转到项目Properties(Alt-F7)。
  2. 在左侧框中,打开Configuration Properties->Linker->Input
  3. 添加您需要使用的所有.a档案的列表
  4. 您可能还需要添加MinGW的libgcc.a
  5. 此外,混合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""

时的CFLAGS

答案 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个档案。你试过重命名文件了吗? :)

相关问题