OpenCV2.3和QT编译问题

OpenCV2.3和QT编译问题,qt,opencv,Qt,Opencv,在提到下面的问题之后,这是一个为openCV2.3设置QT4.7.0、QtCreator 2.0.0的简单过程 现在,对于我尝试使用的所有OpenCV函数,我不断地得到以下错误和更多错误,尽管Qt自己的intellisense在我键入时向我显示函数 对cv::imread(“img.jpg”)的未定义引用 对cv::namedWindow(“窗口”)的未定义引用 我做错了什么 在intel core 2 Duo计算机上使用Win7 X86 .Pro文件包含以下内容 #-------------

在提到下面的问题之后,这是一个为openCV2.3设置QT4.7.0、QtCreator 2.0.0的简单过程

现在,对于我尝试使用的所有OpenCV函数,我不断地得到以下错误和更多错误,尽管Qt自己的intellisense在我键入时向我显示函数

对cv::imread(“img.jpg”)的未定义引用 对cv::namedWindow(“窗口”)的未定义引用

我做错了什么

在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
我得到的错误如下

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'
更新:
正如我所指出的,如果Qt仍然无法识别函数,我将需要重建OpenCV,事实证明这是正确的。作为对这个问题的回答。在WIN7 x86下重建OpenCV。我用minGW来纠正这个问题。可能VC++也需要这样做。无论如何幸运的是现在能够使用OpenCV和Qt > VisualC++中的<>强> LIB <强>。它们可以用一个MIWW工具链无错误地链接,但是只有OpenCV C API是可访问的,新的C++ API(“CV”命名空间,类…)将不会。

由于您的Qt构建是使用MinGW和针对MinGW编译的,因此应该在build/x86/MinGW目录中包含.a文件,而不是.lib文件

如果QtSDK附带的编译器仍然不起作用,您可能需要完全重建OpenCV。

这可能会有帮助-尝试在.Pro文件中重复
LIBS+=…
行三次。@Andrey,我没有得到它……我会解释它是否解决了问题。“但我怀疑这不是一个真实的案例。”安德烈。如果你想添加所有的lib文件,我做了大部分。让我看看是否添加了所有工作。@Andrey,仍然不工作+1我没有注意到使用了mingw。但是,如果安装了完整的Qt SDK,那么您可以在Qt Creator设置中选择MSVC2008配置文件,而不是重建OpenCV。@Alexism,您可能是对的。所以我想我会尝试一些编译器设置或尝试一些新的构建。我确实尝试使用LIBS作为mingw的结尾,但一直出现相同的错误。可能我需要一起为mingw重建OpenCV。@Alexism,你完全正确,我必须在mingw下重建OpenCV,这一切都很有魅力。但我不得不为minGW更改LIBS路径。然而,完成这一切需要一个漫长的过程。