From MinGW static library (.a) to Visual Studio st

2019-01-03 16:04发布

I'm trying to use xlsLib for creating Excel spreadsheets from a C++ application.

The trouble is that compiling xlsLib, I give a .a file (a GCC static library, generated by MinGW). But, my application depends on another API (PhysX) that only compiles with Visual Studio.

Thus: is it possible to transform the GCC static library (xlslib.a) to a Visual Studio static library file (xlslib.lib)?

4条回答
闹够了就滚
2楼-- · 2019-01-03 16:36

Here are two resources I have found useful:

[snip, wrong link]

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

Edit. I can't find the link I was looking for. In the meanwhile, check this one out: http://www.willus.com/mingw/yongweiwu_stdcall.html

查看更多
Luminary・发光体
3楼-- · 2019-01-03 16:48

but using .a causes my .exe to not be able to debug "Debugging information can not be found". – entropy May 22 at 12:27

that's because the .a library does not include the debug info necessary for debugging. you need to tell the compiler to add debug info when in compilation if you want to debug it. for mingw, you need to add "-g" to CFLAGS when you run "make", like "make CFLAGS="-g""

查看更多
The star\"
4楼-- · 2019-01-03 16:50

As far as I know, they are the same thing. Visual Studio's .lib files are also ar archives containing object files. Did you try just renaming the file? :)

查看更多
疯言疯语
5楼-- · 2019-01-03 16:52

The archives of static libraries generated with MinGW are generally compatible with Visual C++ compiler/linker. So, you should be able to use them directly by adding .a files to linker input in your project properties in Visual Studio:

  1. Go to project Properties (Alt-F7).
  2. On the left box, open Configuration Properties->Linker->Input
  3. Add list of all .a archives you need to use
  4. You may need to add also MinGW's libgcc.a library

Also, there may occur problems regarding mixed C run-time libraries properties of C/C++->Code Generation->Runtime Library, but this depends on your build configuration you use with MinGW. Sometimes it is necessary to link against libmsvcrt.a from MinGW but in many (if not most) cases it causes problems.

Finally, this mixed MinGW and Visual C++ linking generally works but for C modules and it does not work for C++, as far as I know.

查看更多
登录 后发表回答