加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

需要帮助在Windows上的Qt Creator中链接静态OpenCV库

发布时间:2020-12-14 05:40:47 所属栏目:Windows 来源:网络整理
导读:我没有连接动态opencv库的问题,但是我想使用静态库,所以我重新选择了OpenCV 2.3并且未选中“build shared libraries”选项.我在我的.pro文件中添加了以下内容 LIBS += "C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_calib3d231.a" "
我没有连接动态opencv库的问题,但是我想使用静态库,所以我重新选择了OpenCV 2.3并且未选中“build shared libraries”选项.我在我的.pro文件中添加了以下内容

LIBS += "C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_calib3d231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_contrib231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_core231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_features2d231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_flann231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_gpu231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_imgproc231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_legacy231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_ml231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_objdetect231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_ts231.a" 
"C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_video231.a"

INCLUDEPATH += "C:Program FilesopenCV_staticopencvbuildinstallinclude"
INCLUDEPATH += "C:Program FilesopenCV_staticopencvbuildinstallincludeopencv"

这与我之前使用动态库时的情况非常相似,除了.a文件实际上以.dll .a结尾,我把dll(不是dll.a文件)放在qt程序的输出目录中(所以程序可以找到并运行).现在重点是我不需要那些dll,所以它们不再在我的程序的输出目录中(实际上它们不是用OpenCV构建的).但是当我尝试构建程序时,我遇到了这些错误:

C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x13): undefined reference to `AVIStreamRelease@4'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x25): undefined reference to `AVIStreamRelease@4'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x37): undefined reference to `AVIFileRelease@4'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureCAM_VFW4openEi+0x6c): undefined reference to `capGetDriverDescriptionA@20'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureCAM_VFW4openEi+0xb7): undefined reference to `capCreateCaptureWindowA@32'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureAVI_VFW9grabFrameEv+0x29): undefined reference to `AVIStreamGetFrame@8'
.
.
.
.
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(grfmt_jpeg2000.obj):grfmt_jpeg2000.cpp:(.text$_ZN2cv13Jpeg2KEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x17b): undefined reference to `jas_stream_close'
C:Program FilesopenCV_staticopencvbuildinstallliblibopencv_highgui231.a(grfmt_jpeg2000.obj):grfmt_jpeg2000.cpp:(.text.startup._GLOBAL__sub_I_C__Program_Files_openCV_static_opencv_modules_highgui_src_grfmt_jpeg2000.cpp+0x4): undefined reference to `jas_init'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [releasetrusion.exe] Error 1
mingw32-make.exe: *** [release] Error 2
23:21:10: The process "C:MinGWbinmingw32-make.exe" exited with code 2.
Error while building project trusion (target: Desktop)
When executing build step 'Make'

我正在使用MinGW.使用用于构建opencv的相同工具链编译项目.如上所述,使用动态库.不适用于静态库.

解决方法

看来你错过了Jasper依赖.
Windows上的OpenCV使用预构建的libjasper库(lib / libjasper *),尝试将它们添加到LIBS

对于’未定义的AVIStreamRelease @ 4’错误引用,请尝试链接vfw32.lib或MSVFW32.dll

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读