Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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的架构x86_64的未定义符号_Qt_Opencv - Fatal编程技术网

使用QT和Opencv的架构x86_64的未定义符号

使用QT和Opencv的架构x86_64的未定义符号,qt,opencv,Qt,Opencv,我正在使用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

我正在使用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
我尝试过这个答案,但它对我不起作用:


有人能帮我吗?谢谢。

我想你需要把默认的GNU C++ STD实现改变为下面的方法,把它传递给编译器,这大概是CLAN:

-stdlib=libc++
简而言之,如果你这样做的话,不要混合使用gcc和clang,因为不幸的是,它们不是100%abi兼容的。您可以检查构建libopencv时使用的是哪一个:

otool -L libopencv-version.dylib

请显示您的项目文件。@LaszloPapp我刚刚更新了我的问题,我现在刚刚测试了Opencv的imread()函数,错误仍然存在。@LaszloPapp您能看看我更新的问题吗?您确定没有混合32位和64位吗?Opencv安装在您的/usr/local/lib中?是的,我确定。“lipo-info libopencv_core.dylib非fat文件:libopencv_core.dylib是体系结构:x86_64”和“clang--version苹果LLVM version 5.1(clang-503.0.38)(基于LLVM 3.4svn)目标:x86_64-Apple-darwin13.1.0线程模型:posix”您好,非常感谢您的回答。我还注意到,在XCODE中,我只能在“LBSTDC++(GNU C++标准库)”下使用OpenCV。您能告诉我如何更改QT的设置吗?通过将“-stdlib=libc++”插入.pro文件?@OwenZhang:尝试将其放入这个变量:因此,您可以编写以下内容:
QMAKE\u cxflags++=-stdlib=libc++
。我将“QMAKE\u cxflags+=-stdlib=libc++”放在.pro文件的末尾。但是没有运气…相同的错误。您是否使用make VERBOSE=1检查它是否已实际传递给编译器?如果没有,您将需要提供一个。对不起,我对编译器的事情很陌生…您能告诉我详细的详细信息吗?谢谢。
-stdlib=libc++
otool -L libopencv-version.dylib