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

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

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

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

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

  1. 转到项目Properties (Alt-F7)。
  2. 在左边的框中,打开Configuration Properties->Linker->Input
  3. 添加您需要使用的所有.a档案的列表
  4. 您可能还需要添加MinGW的libgcc.a

此外,可能会出现有关properties of C/C++->Code Generation->Runtime Library运行时库的混合C运行时库properties of C/C++->Code Generation->Runtime Library问题,但这取决于您在MinGW中使用的生成configuration。 有时候需要从MinGW链接到libmsvcrt.a ,但是在很多情况下(如果不是最多的话)会导致问题。

最后,这个混合的MinGW和Visual C ++链接通常可以工作,但对于C模块而言,据我所知,它不适用于C ++。

但使用.a导致我的.exe不能debugging“无法finddebugging信息”。 – 5月22日12:27

这是因为.a库不包含debugging所需的debugging信息。 你需要告诉编译器在编译时添加debugging信息,如果你想debugging它。 对于mingw,你需要在运行“ make ”的时候添加“ -g ”到CFLAGS,比如“ make CFLAGS="-g"

以下是我发现有用的两个资源:

[剪断,错误的链接]

http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html

编辑。 我无法find我正在寻找的链接。 同时,请查看: http : //www.willus.com/mingw/yongweiwu_stdcall.html

据我所知,他们是一回事。 Visual Studio的.lib文件也是包含对象文件的ar存档。 你尝试重命名文件吗? 🙂