QT编译器Mingw调用VS编译库的解决方法

QT编译器Mingw调用VS编译库的调用方法

    • 将库函数替换成编译器看得懂的写法
    • 使用Depends.exe查看dll动态链文件
    • reimp工具将.lib转成.a
    • 更换编译器

最近工作需要,在QT下Mingw调用C++生成的库(.lib引导.dll),而QT 及 VS编译的库并不能互相调用,主要是MinGW和MSVC兼容度并不那么好,调整好lib正确的调用方法,在编译总是会提示error: undefined reference to 的问题,百度了各种方法并解决不了我的问题,最终通过最后一种方式解决。下面总结一下:

将库函数替换成编译器看得懂的写法

主要根据该文 https://wenku.baidu.com/view/ae3667fe0b1c59eef8c7b4bc.html
原理是将对应函数写法翻译成Mingw可识别的写法

使用Depends.exe查看dll动态链文件

https://jingyan.baidu.com/article/ff411625c7e60812e48237d5.html

reimp工具将.lib转成.a

mingw编译出来的静态库后缀名为.a,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。使用reimp工具转换后也并不能解决我的问题

更换编译器

根据编译器原理出发,最后通过这个方式解决,qt中配置MSVC编译器,将源文件使用Editplus转化成UTF-8+BOM格式,然后重新构建工程即可。成功解决。

——————————————
当然,如果实在想使用Mingw编译器,使用库的源码在QT下重新编译成的库,理论上在调用时是完美兼容的,有兴趣的小伙伴可以试试。

你可能感兴趣的:(随笔,qt)