LinuxコンパイルOpenCVに「cv::imread(std::_cxx 11::エラー解決策」が表示されます.

3250 ワード

もともとCentOSでコンパイルするのは普通だったのですが、Ubuntuを変えてOpenCVをテストしたところ、コンパイルできないことに気づきました:/tmp/cceUgR 20.o:関数「main」で:
test.c:(.text+0xb1): ‘cv::imread(std::__cxx11::basic_string, std::char_traits, std::allocator > const&, int)’ 
test.c:(.text+0xc7): ‘cv::_InputArray::_InputArray(cv::Mat const&)’ 
test.c:(.text+0xe0): ‘cv::imshow(std::__cxx11::basic_string, std::char_traits, std::allocator > const&, cv::_InputArray const&)’ 
test.c:(.text+0xea): ‘cv::waitKey(int)’ 
/tmp/cceUgR20.o: ‘cv::Mat::~Mat()’ :
test.c:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): ‘cv::fastFree(void*)’ 
/tmp/cceUgR20.o: ‘cv::Mat::release()’ :
test.c:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): ‘cv::Mat::deallocate()’ 
collect2: error: ld returned 1 exit status

私はずっとC++11あるいはg++バージョンの原因だと思って、見ました:http://forum.ubuntu.com.cn/viewtopic.php?f=48&t=377522提案:
g++ pkg-config --cflags --libs opencv lena.cpp -o lena
コンパイルに失敗し、
g++ lena.cpp pkg-config --cflags --libs opencv -o lena
これで成功する.やってみたがやはりそうだった.おかしいですね.
また、次のことも可能です.http://blog.csdn.net/chengy35/article/details/42738335