gcc / opencv找不到架构x86_64的标准符号

时间:2016-10-15 22:19:15

标签: c++ opencv gcc

我使用的是MacBook Pro,OSX Yosemite 10.10.4。我用homebrew来安装gcc(用作c ++编译器)和opencv。现在当我运行基本的opencv示例脚本时,我收到一个我不明白的错误。

  

架构x86_64的未定义符号:

     
    

“cv :: Mat :: deallocate()”,引自:

         
      c ++中的

cv :: Mat :: release()_ opencv_test-e26d2b.o

    
         

“cv :: Mat :: create(int,int const *,int)”,引自:

         
      c ++中的

cv :: Mat :: create(int,int,int)_ opencv_test-e26d2b.o

    
         

“cv :: Mat :: operator =(cv :: Scalar_ const&)”,引自:

         
      c ++中的

cv :: Mat :: Mat(int,int,int,cv :: Scalar_ const&)_ opencv_test-e26d2b.o

    
         

“cv :: fastFree(void *)”,引自:

         
      c ++中的

cv :: Mat :: ~Mat()_ opencv_test-e26d2b.o

    
         

“cv :: Formatter :: get(char const *)”,引自:

         
      

cv :: operator<<(std :: __ 1 :: basic_ostream>&,       Cv中的cv :: Mat const&)_ opencv_test-e26d2b.o

    
  
     

ld:找不到架构x86_64的符号

     

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

(抱歉格式不佳,对此的建议也会受到欢迎)

这是我跑的代码......

#include <opencv2/core/core.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    Mat img(2,2, CV_8UC3, Scalar(126,0,255));
    cout << "img = \n " << img << "\n\n";
    return 0;
}

我下载了普通的OpenCV,而不是32位版本,所以我不知道为什么我会收到这个错误。我对这些命令行问题不太熟悉。我该怎么办?

编辑:好的,这个命令有效。我的问题肯定是链接到图书馆。

g++ -ggdb 'pkg-config --cflags --libs /usr/local/opt/opencv3/lib/pkgconfig/opencv.pc' -stdlib=libstdc++ c++_opencv_test.cpp -o test

显然在OSX 10.9及更高版本上,编译器默认链接到libc ++而不是libstdc ++。

我能做什么,所以每次运行时都不需要输出那么长的命令?

0 个答案:

没有答案