Qt CMake工程引用第三方动态库不成功的问题的解决方法 error: LNK1104: 无法打开文件“inpoutx64.lib” 动态库和error: LNK1107: 文件无效或损坏: 无法在

前言

哎,这个问题是真的难受,中间尝试了很多方法,报了很多种错误,焦头烂额。不得不说在windows上开发真的是坑贼多。

环境

使用Qt Creator开发,Qt版本5.14,CMake版本3.26.2,win10系统。

问题描述

博主需要开发一个给脑电采集设备打标签的系统,而设备只能使用并口通讯,也就是说,我需要在Qt上写出一个接口用来给bp设备传数据。在网上找了很久,没找到qt的并口通讯的方法,于是问了同学,得知需要用到一个C++的第三方类库。下载网址:http://www.highrez.co.uk/Downloads/InpOut32/
下好了之后,把库放到system32和我的项目目录下。把头文件和库放好了之后,在CMakeLists.txt引入动态库:

link_libraries(${PROJECT_SOURCE_DIR}/dll/inpoutx64.dll)

注意,这个有个坑(当然,也有可能只有我不知道),需要把这串指令放到add_library()或者add_executable()前面,不然会失败。
然后在我自己的头文件和源文件里引入它的头文件,并且调用库里面的函数。报错:
error: LNK1104: 无法打开文件“inpoutx64.lib” 动态库
或者报错:
error: LNK1107: 文件无效或损坏: 无法在 0x2E8 处读取
当然,修改的过程还有其它错误,那些都好解决。主要是这俩错误。注意,此时我用的编译器是MSVC2017 32bit,还没有意识到问题的严重性。我尝试了很多方法都不行,都是报这个错。

解决方法

问题出现的第四天,我突然想到,这种库的运用面肯定十分广,那么就会涉及到跨平台,跨平台就需要用到GCC的编译器,也就是minGW,还家伙,会不会是我用的MSVC编译器所以才不行的。好,换minGW编译器,clean,Run Cmake,编译,好家伙,还是报错。陷入沉思。噢噢噢噢噢噢!库的版本是64位的,我用的minGW是32位的,好,换成minGW64bit的,clean,Run Cmake,编译,Nice!编译通过。

总结

使用第三方库的时候,注意库是用什么编译器编译的,这点很重要不让就会出现我这种情况。哎,还是经验不足导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值