如何使用OpenCV从Qt制作.exe

时间:2016-12-01 18:17:33

标签: c++ qt opencv deployment

我有QtProject使用了一些OpenCV,我想从中使用.exe在其他计算机上运行它。

windeployqt.exe即使对于Qt库也无法做到,但如果我手动复制库,Qt正在运行。但是,我不知道如何让OpenCV工作。 我的.pro文件看起来像这样。

#-------------------------------------------------
#
# Project created by QtCreator ...
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = name01
TEMPLATE = app

INCLUDEPATH += C:/opencv-qt/install/include
LIBS += -L"C:/opencv-qt/install/x86/mingw/bin"
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310

SOURCES += main.cpp\
        widget.cpp

HEADERS  += widget.h

FORMS    += widget.ui

在这种情况下,当我尝试运行.exe时,它说我的计算机中缺少libopencv_imgcodecs310。 我想我必须改变路径,所以我尝试了这个:

INCLUDEPATH += /include
LIBS += -L"/bin"
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310

并复制bin并将文件夹包含到项目中。但它甚至没有编译错误消息

cannot find -lopencv_core310
cannot find -lopencv_highgui310
cannot find -lopencv_imgproc310
cannot find -lopencv_imgcodecs310

我在其他论坛上发现了一些关于它的问题,但没有回答。

我没有时间,所以我现在就来解决这个问题。 Qt 5.8发布了,这不应该是问题,但我的应用程序变得更大,现在.pro看起来像这样:

#-------------------------------------------------
#
# Project created by QtCreator ...
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport

TARGET = name01
TEMPLATE = app

INCLUDEPATH += C:/opencv-qt/install/include
LIBS += -L"C:/opencv-qt/install/x86/mingw/bin"
LIBS += -lopencv_core310 -lopencv_highgui310 -lopencv_imgproc310 -lopencv_imgcodecs310

SOURCES += main.cpp\
        widget.cpp\
        qcustomplot.cpp

HEADERS  += widget.h
        qcustomplot.h

FORMS    += widget.ui

所以现在即使在我的电脑上也无法正常工作。 如果我尝试运行.exe,它会说:

the procedure entry point __gxx_personality_v0 could not be located
in the dynamic link library libstdc++-6.dll

我也尝试过Dependency Walker,它只是说它找不到libopencv_imgprocs310.dll,libopencv_core310.dll和libopencv_imgcodecs310.dll,即使它们与.exe位于同一个文件夹中。


我不知道我现在应该如何处理这个问题,或者我是否应该制作一个新问题,对于任何困难都很抱歉。

1 个答案:

答案 0 :(得分:0)

当您的OpenCV lib文件仍在C:/ opencv -qt / install / x86 / mingw / bin并且代码编译时,请尝试将代码使用的.dll文件复制到包含exe文件的文件夹中。或者将C:/ opencv -qt / install / x86 / mingw / bin添加到环境变量中。