我在QtCreator內部運行簡單的OpenCV應用程序時出現了一個惱人的錯誤。首先:我自己使用MSVC2013 64bit,搭配Cuda和Qt構建Qt5.6和OpenCV3.0.0。我測試了MSVC2013內部的構建,它工作正常。 現在切換到QtCreator我將INCLUDEPATH和LIBS添加到一個正常的C++項目中,保存了.pro文件並運行qmake。工作。 現在我包含了highgui.hpp,core.hpp並編寫了簡單的圖像加載和顯示應用程序。見代碼未找到DLL入口點Qt 5.6與OpenCV 3.0.0
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace std;
int main()
{
cout << "Hello World!" << endl;
cv::Mat Image;
cv::namedWindow("Test");
return 0;
}
現在你想知道爲什麼我沒有加載任何圖像。那麼我可以跟蹤cv :: namedWindow的錯誤。 後,我建立了項目,我運行調試,突然我在一個單獨的窗口中得到這個錯誤:
The inferior stopped because it triggered an exception.
Stopped in thread 0 by: exception at 0x7ffa6f8dc4e0, code 0xc0000139:
DLL entry point not found, flags=0x1 (Execution cannot be continued)
我可以生成項目,但我不能運行它。正如我所說的,我可以在MSVC2013 IDE中構建並運行完全相同的應用程序,而不會出現任何錯誤。我搜索了網頁,但似乎我是唯一一個有這個問題的人。
這裏是我的.pro代碼
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
include(deployment.pri)
qtcAddDeployment()
INCLUDEPATH += C:\\OpenCV300C\\include \
C:\\OpenCV300\\include\\opencv \
C:\\OpenCV300\\\include \\opencv2
LIBS += -LC:\\OpenCV300\\x64\\vc12\\lib \
-lopencv_calib3d300d \
-lopencv_core300d \
-lopencv_features2d300d \
-lopencv_flann300d \
-lopencv_hal300d \
-lopencv_highgui300d \
-lopencv_imgcodecs300d \
-lopencv_imgproc300d \
-lopencv_ml300d \
-lopencv_objdetect300d \
-lopencv_photo300d \
-lopencv_shape300d \
-lopencv_stitching300d \
-lopencv_superres300d \
-lopencv_ts300d \
-lopencv_video300d \
-lopencv_videoio300d \
我使用Win8.1,MSVC2013 64位,Qt5.6和OpenCV3.0.0(自己的版本)
正如我敢肯定的構建OpenCV和Qt是正確的,我自己懷疑錯誤。但我不知道我做錯了什麼。 有趣的是,我能夠通過Mat顯示圖片並將其放到QImage中,並通過Pixmap將其顯示在標籤上。但我想知道,爲什麼cv :: namedWindow不起作用。
另外我注意到在另一個線程,我必須建立Qt靜態。 MSVC2013 - Entry Point Not Found
是不是要走的路?
編輯: 現在事情開始變得有趣了。我實際上能夠通過QtCreator之外的qt來運行程序構建(只需從資源管理器運行.exe即可)。所以我很確定一切都很好。但是在運行應用程序時QtCreator必然會出現問題。對此有何想法?