【发布时间】:2016-12-01 18:17:32
【问题描述】:
我有使用了一些 OpenCV 的 QtProject,我想从中制作 .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 和 include 文件夹复制到项目中。但它甚至没有编译错误消息
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 在同一个文件夹中。
我不知道我现在应该如何处理这个问题,或者我是否应该提出一个新问题,对于任何困难,我深表歉意。
【问题讨论】:
-
以
/开头的路径是绝对路径。你确定你在根文件夹上有正确的bin和include目录吗?或者你的意思是(例如)$$PWD/bin和$$PWD/include? -
谢谢,我不知道这意味着绝对路径。但是,当我使用
$$PWD/include或仅使用include时,结果相同 -
很久之后我又回到了这个问题,我不知道我现在应该如何管理这个问题或者我是否应该提出一个新问题,所以我改变了问题。如有任何困难,请见谅。
标签: c++ qt opencv deployment