我试图在Qt中创建一个简单的Opencv应用程序,并且在运行时整个应用程序崩溃了。如果我从项目中注释掉与opencv相关的代码,则该项目运行正常。
我做了什么:
Downloaded the Qt 5.5.0 VS2013 64bit version
Downloaded the OpenCV 3.0
Downloaded the Cmake 3.3.2
当我提取Opencv软件包时,已经有了预编译的二进制文件,但是网上的所有教程都希望我重新编译源代码,我也是如此。该软件包包含:
build
sources
创建了一个名为
mymade
的新文件夹,以将二进制文件保存在其他两个目录旁边。所以现在看起来像这样: build
mymade
sources
脚步:
CMake
,从提取的文件中指定源文件夹并指定
mymade
作为二进制文件的输出。 opencv
的所有选项以及Qt!并对其进行配置,随后生成文件。 这是结果内容:
一切都完成了,现在我需要构建二进制文件。我打开
OpenCV.sln
并编译了发行和调试二进制文件。 dll放在bin
目录中,而lib文件放在lib
文件夹中。现在是时候配置Qt项目的
.pro
文件了,所以我使用了build目录中的头文件,对于libs,我使用了mymade
文件夹中的lib文件夹。这是我想到的第一个配置,可以在没有任何链接程序问题的情况下进行编译,但是会立即崩溃。项目文件中的初始更改:
#-------------------------------------------------
#
# Project created by QtCreator 2015-10-06T14:04:20
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
INCLUDEPATH += L://Apps_Installation_Folder//opencv//build//include
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//*.lib
FORMS += mainwindow.ui
按照this之类的答案建议在项目文件中执行此操作也没有任何好处:
#-------------------------------------------------
#
# Project created by QtCreator 2015-10-06T14:04:20
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
INCLUDEPATH += L://Apps_Installation_Folder//opencv//build//include
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_core300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_highgui300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_imgcodecs300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_ml300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_objdetect300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_photo300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_shape300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_hal300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_flann300.lib
LIBS += L://Apps_Installation_Folder//opencv//mymade//lib//Release//opencv_features2d300.lib
FORMS += mainwindow.ui
这也会失败:
#-------------------------------------------------
#
# Project created by QtCreator 2015-10-06T14:04:20
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
INCLUDEPATH += L://Apps_Installation_Folder//opencv//build//include
LIBS +=-L"L://Apps_Installation_Folder//opencv//mymade//lib//Release"
LIBS += -lopencv_core300 -lopencv_highgui300 -lopencv_imgcodecs300 -lopencv_ml300 -lopencv_objdetect300 -lopencv_photo300 -lopencv_hal300 -lopencv_shape300 -lopencv_flann300 -lopencv_features2d300
FORMS += mainwindow.ui
那么这是什么问题呢?
更新资料
正如@Miki指出的,Qt找不到opencv dll(上面的配置还可以,但是),要解决此问题,只需要将包含dll的目录添加到PATH变量中,就可以了。去,现在一切都会好起来的。
最佳答案
从评论到问题,事实证明该程序未找到OpenCV dll。
您可以: