gpt4 book ai didi

qt - 体系结构 x86_64 的 undefined symbol 将 QT 与 Opencv 结合使用

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:35 24 4
gpt4 key购买 nike

我正在将 QT 的 IDE 与 OpenCV 结合使用。该代码在 Xcode 中运行良好,但当我将它们复制到 QT 进行 GUI 设计时,它根本不起作用。我疯狂地搜索...

这是错误信息:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -g -gdwarf-2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.9 -Wall -W -fPIE -DQT_CORE_LIB -I../../../../Qt/5.2.1/clang_64/mkspecs/macx-clang -I../Hello -I/usr/local/include -I../../../../Qt/5.2.1/clang_64/lib/QtCore.framework/Versions/5/Headers -I. -I. -F/Users/Chenxi/Qt/5.2.1/clang_64/lib -o main.o ../Hello/main.cpp
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -mmacosx-version-min=10.9 -o Hello main.o -F/Users/Chenxi/Qt/5.2.1/clang_64/lib -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -lopencv_calib3d -framework QtCore
Undefined symbols for architecture x86_64:
"cv::imread(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Hello] Error 1

主要.cpp:

所以我想应该是opencv的链接错误

#include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv/cv.h>
#include <iostream>


using namespace std;
using namespace cv;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

cout<<"hello world"<<endl;
Mat test(10,10,CV_8UC1);
cout<<test.cols<<endl;

Mat test1 = imread("/Users/master/desktop/FYP/GUI/Demo_db/neg_1.png");

return a.exec();
}

.pro 文件:


QT       += core

QT -= gui

TARGET = Hello
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

INCLUDEPATH += /usr/local/include

LIBS += -L/usr/local/lib \
-lopencv_core \
-lopencv_imgproc \
-lopencv_highgui \
-lopencv_objdetect \
-lopencv_calib3d


SOURCES += main.cpp

我试过这个答案,但它对我不起作用: QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 to 10.9

谁能帮帮我?谢谢。

最佳答案

我认为您需要将默认的 gnu C++ std 实现更改为以下内容,方法是将其传递给您的编译器,这大概是 clang:

-stdlib=libc++

简而言之,如果您这样做,请不要混合使用 gcc 和 clang,因为很遗憾,它们并非 100% abi 兼容。您可以检查 libopencv 是用哪个构建的:

otool -L libopencv-version.dylib

关于qt - 体系结构 x86_64 的 undefined symbol 将 QT 与 Opencv 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23707123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com