Windows下Qt5集成预编译OpenCV3.4.5遇LNK1104错误求助
问题分析与解决方案
你的链接错误根源在于.pri文件中LIBS的语法写错了,导致Qt的qmake解析库路径时出现偏差,误以为要找.obj文件(而我们实际需要链接的是.lib静态/导入库)。
错误原因拆解
你原来的写法里,把-l(用于指定库名的前缀)和库路径直接连在一起写成lc:/...,qmake会把这个l当成库名的一部分,并且错误地将整个路径解析为要查找的目标文件,所以才会出现找不到lc:\opencv-3.4.5\prebuild\x64\vc14\lib\opencv_world345d.obj的错误。
修正后的.pri配置(两种可选方式)
方式一:推荐使用-L指定库目录 + -l指定库名
这种写法更符合qmake的规范,也更灵活:
INCLUDEPATH += C:/opencv-3.4.5/prebuild/include \ C:/opencv-3.4.5/prebuild/include/opencv \ C:/opencv-3.4.5/prebuild/include/opencv2 # 先指定OpenCV库文件所在的目录 LIBS += -LC:/opencv-3.4.5/prebuild/x64/vc14/lib Debug: { # 链接Debug版本的库(不带.lib后缀) LIBS += -lopencv_world345d } Release: { # 链接Release版本的库 LIBS += -lopencv_world345 }
方式二:直接指定完整的库文件路径
如果你更喜欢直白的路径写法,可以直接写出.lib文件的完整路径:
INCLUDEPATH += C:/opencv-3.4.5/prebuild/include \ C:/opencv-3.4.5/prebuild/include/opencv \ C:/opencv-3.4.5/prebuild/include/opencv2 Debug: { LIBS += C:/opencv-3.4.5/prebuild/x64/vc14/lib/opencv_world345d.lib } Release: { LIBS += C:/opencv-3.4.5/prebuild/x64/vc14/lib/opencv_world345.lib }
额外检查点
- 确认你的Qt编译器版本和OpenCV预编译库的编译器匹配:你用的是
vc14版本的OpenCV库,对应的是VS2015编译器,确保Qt套件使用的是MSVC2015(x64),否则会出现不兼容的链接错误。 - 你已经把
C:\opencv-3.4.5\prebuild\x64\vc14\bin添加到系统Path的操作是正确的,这保证了程序运行时能找到OpenCV的.dll文件。
内容的提问来源于stack exchange,提问作者jwm
相关产品推荐
相关产品推荐

