Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未定义的引用qt-opencv_Qt_Opencv_Reference_Undefined - Fatal编程技术网

未定义的引用qt-opencv

未定义的引用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和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

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文档中找到:[在“添加库”部分下

  • 右键单击位于创建者左侧“项目窗格”中的项目文件…并选择“添加库…”
  • 按照向导的说明操作
  • 让我从这里补充一些特殊性

  • 选择“外部库”
  • 对于“库文件”,导航到您的opencv_worldXXX.lib文件(或opencv_worldXXXd.lib文件),您会注意到,通过仅指定一个或另一个,向导有一个自动包含另一个的复选框)[ex..\opencv\build\x64\vc12\lib\opncv_world.lib]
  • 对于“包含文件夹”,请导航到内部版本中的“包含”文件夹。[ex..\opencv\build\Include]
  • 选择您的操作系统、动态/静态库(以适当的为准)
  • 点击下一个,清理干净,然后跑

  • karlphillips是正确的,您将opencv依赖项链接到Qt的方式存在错误。您可以按照此处的其他答案手动输入信息(每次手动输入都会导致混乱),或者您可以使用内置的“添加库…”选项(超级简单)

    下面列出的步骤可在Qt5文档中找到:[在“添加库”部分下

  • 右键单击位于创建者左侧“项目窗格”中的项目文件…并选择“添加库…”
  • 按照向导的说明操作
  • 让我从这里补充一些特殊性

  • 选择“外部库”
  • 对于“库文件”,导航到您的opencv_worldXXX.lib文件(或opencv_worldXXXd.lib文件),您会注意到,通过仅指定一个或另一个,向导有一个自动包含另一个的复选框)[ex..\opencv\build\x64\vc12\lib\opncv_world.lib]
  • 对于“包含文件夹”导航