OpenCV2.3和QT编译问题

2 qt opencv

在参考下面的问题之后,为openCV2.3设置QT4.7.0,QtCreator 2.0.0轻而易举.

OpenCV2.3和QTCreator 现在,我继续得到以下错误以及我尝试使用的所有OpenCV函数的更多错误,尽管Qt自己的intellisense向我展示了我输入的函数.

未定义引用cv :: imread("img.jpg")对cv :: namedWindow("window")的未定义引用

我在这做错了什么?

在intel core 2 Duo机器上使用Win7 X86.

.Pro文件包含以下内容

#-------------------------------------------------
#
# Project created by QtCreator 2011-08-28T00:44:27
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = myQtConsoleProject
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp


INCLUDEPATH += H:/OpenCV2.3/build/include
INCLUDEPATH += H:/OpenCV2.3/build/include/opencv


LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_calib3d230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_contrib230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_core230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_features2d230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_flann230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_highgui230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_imgproc230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_objdetect230.lib
LIBS += H:/OpenCV2.3/build/x86/vc9/lib/opencv_video230.lib
Run Code Online (Sandbox Code Playgroud)

我得到的错误如下

debug/main.o: In function `main': 
G:\QT Projects\myQtConsoleProject-build-desktop/../myQtConsoleProject/main.cpp:6: undefined reference to `cv::imread(std::string const&, int)' 
G:\QT Projects\myQtConsoleProject-build-desktop/../myQtConsoleProject/main.cpp:7: undefined reference to `cv::namedWindow(std::string const&, int)' 
G:\QT Projects\myQtConsoleProject-build-desktop/../myQtConsoleProject/main.cpp:8: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)' 
G:\QT Projects\myQtConsoleProject-build-desktop/../myQtConsoleProject/main.cpp:8: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)' 
G:\QT Projects\myQtConsoleProject-build-desktop/../myQtConsoleProject/main.cpp:9: undefined reference to `cv::waitKey(int)' 
debug/main.o: In function `~Mat': 
h:/OpenCV2.3/build/include/opencv2/core/mat.hpp:297: undefined reference to `cv::fastFree(void*)' 
debug/main.o:h:/OpenCV2.3/build/include/opencv2/core/mat.hpp:381: undefined reference to `cv::Mat::deallocate()' 
collect2: ld returned 1 exit status 
mingw32-make[1]: *** [debug\myQtConsoleProject.exe] Error 1 
mingw32-make: *** [debug] Error 2 
The process "E:/Qt/2010.04/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project myQtConsoleProject (target: Desktop)
When executing build step 'Make'
Run Code Online (Sandbox Code Playgroud)

更新: 正如 Alexdim已经指出,如果Qt仍然无法识别函数,我将需要重建OpenCV,结果证明是真的.作为这个问题的答案.在WIN7 x86下重建OpenCV.我使用minGW来纠正问题.也许这需要为VC++做.无论如何......幸运的是能够使用OpenCV和Qt吧!

ale*_*sdm 6

.LIB是为Visual C++.它们可以毫无错误地与MinGW工具链链接,但只能访问OpenCV C API,新的C++ API("cv"命名空间,类......)将不会.

由于您的Qt构建是使用MinGW编译的,因此您应该在build/x86/mingw目录中包含.a文件而不是.lib文件.
您可能必须使用QtSDK附带的编译器完全重建OpenCV,如果它仍然不起作用.