我使用的是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 ++。
我能做什么,所以每次运行时都不需要输出那么长的命令?