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

3 篇文章 0 订阅


最近工作需要,在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下重新编译成的库,理论上在调用时是完美兼容的,有兴趣的小伙伴可以试试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值