未定义的引用qt-opencv
我不熟悉Qt和openCV,我尝试用代码制作一个简单的项目: 在.pro中:未定义的引用qt-opencv,qt,opencv,reference,undefined,Qt,Opencv,Reference,Undefined,我不熟悉Qt和openCV,我尝试用代码制作一个简单的项目: 在.pro中: QT += core QT -= gui QT += widgets TARGET = latihan_2 CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp INCLUDEPATH += E:\\OpenCV\\OpenCV\\opencv\\build\\include
QT += core
QT -= gui
QT += widgets
TARGET = latihan_2
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += E:\\OpenCV\\OpenCV\\opencv\\build\\include
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_core246.lib
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui246.lib
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc246.lib
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d246.lib
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d246.lib
在main.cpp中:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main(){
//read image
cv::Mat image;
image = cv::imread("img.jpg");
//create image window named "My image"
cv::namedWindow("My Image");
//show the image on window
cv::imshow("My image", image);
//wait key for 5000ms
cv::waitKey(5000);
return 1;
}
#包括
#包括
int main(){
//读取图像
cv::Mat图像;
image=cv::imread(“img.jpg”);
//创建名为“我的图像”的图像窗口
简历:namedWindow(“我的形象”);
//在窗口上显示图像
简历::imshow(“我的图像”,图像);
//等待5000毫秒
cv::waitKey(5000);
返回1;
}
但是,对于cv::imread、cv::namedWindows和我使用的其他cv函数的未定义引用,它总是给出错误
我使用基于Qt5.1.1和openCV-2.4.6.0的QtCreator 2.8.1
任何帮助都将不胜感激!
谢谢您可能不应该使用::cv,只需直接使用该函数并重试即可 很抱歉,错误的建议,真正的原因是无法找到您的LIB: 应使用此选项:
LIBS+=
E:\\OpenCV\\OpenCV\\OpenCV\\build\\x86\\vc10\\lib\\OpenCV\u core246.lib
您可能不应该使用::cv,只需直接使用该函数并重试即可
很抱歉,错误的建议,真正的原因是无法找到您的LIB:
应使用此选项:
LIBS+=
E:\\OpenCV\\OpenCV\\OpenCV\\build\\x86\\vc10\\lib\\OpenCV\u core246.lib
未定义的引用错误是一个链接问题,这意味着您的项目编译成功,但链接器无法找到这些函数的二进制代码
我有一个在Windows/Linux/Mac OS X上编译的非常好的设置。如果您愿意,您会注意到,对于Windows,我会:
win32 {
message("* Using settings for Windows.")
INCLUDEPATH += "C:\\opencv\\build\\include" \
"C:\\opencv\\build\\include\\opencv" \
"C:\\opencv\\build\\include\\opencv2"
LIBS += -L"C:\\opencv\\build\\x86\\vc10\\lib" \
-lopencv_core242 \
-lopencv_highgui242 \
-lopencv_imgproc242
}
确保用您拥有的特定OpenCV版本替换LIBS
引用的242编号
还必须指出,OpenCV是使用特定标志编译的,根据安装的二进制版本,有时还需要向项目的.pro文件中添加以下说明:
QMAKE_CXXFLAGS_DEBUG += -Zi -MTd
QMAKE_CXXFLAGS_RELEASE += -MT
MTd
表示多线程调试DLL,MT
表示多线程静态链接。未定义的引用错误是链接问题,这意味着项目编译成功,但链接器无法找到这些函数的二进制代码
我有一个在Windows/Linux/Mac OS X上编译的非常好的设置。如果您愿意,您会注意到,对于Windows,我会:
win32 {
message("* Using settings for Windows.")
INCLUDEPATH += "C:\\opencv\\build\\include" \
"C:\\opencv\\build\\include\\opencv" \
"C:\\opencv\\build\\include\\opencv2"
LIBS += -L"C:\\opencv\\build\\x86\\vc10\\lib" \
-lopencv_core242 \
-lopencv_highgui242 \
-lopencv_imgproc242
}
确保用您拥有的特定OpenCV版本替换LIBS
引用的242编号
还必须指出,OpenCV是使用特定标志编译的,根据安装的二进制版本,有时还需要向项目的.pro文件中添加以下说明:
QMAKE_CXXFLAGS_DEBUG += -Zi -MTd
QMAKE_CXXFLAGS_RELEASE += -MT
MTd
是指多线程调试DLL,MT
代表多线程静态链接。当我遇到同样的问题时,谷歌把我带到了这里。
这里的解决方案对我没有帮助。但最后我发现了问题:我没有在cmakegui
中设置CMAKE\u BUILD\u TYPE
的值。
您可以在release
和debug
之间进行选择,我认为您必须选择一个
多亏了最后一条提示,我成功编译了OpenCV 3.0.0。当我遇到同样的问题时,谷歌把我带到了这里。 这里的解决方案对我没有帮助。但最后我发现了问题:我没有在
cmakegui
中设置CMAKE\u BUILD\u TYPE
的值。
您可以在release
和debug
之间进行选择,我认为您必须选择一个
多亏了最后一个技巧,我成功编译了OpenCV 3.0.0。karlphillips是正确的,您将OpenCV依赖项链接到Qt的方式存在错误。您可以按照此处其他答案的指示手动输入信息(每次手动输入时,我都会把它弄得一团糟),也可以使用内置的“添加库…”选项(超级简单) 下面列出的步骤可在Qt5文档中找到:[在“添加库”部分下
karlphillips是正确的,您将opencv依赖项链接到Qt的方式存在错误。您可以按照此处的其他答案手动输入信息(每次手动输入都会导致混乱),或者您可以使用内置的“添加库…”选项(超级简单) 下面列出的步骤可在Qt5文档中找到:[在“添加库”部分下