Error when using imshow on OS X

余生长醉 提交于 2019-12-30 05:28:06

问题


I have setup OpenCV2 in XCode but unfortunately imshow does not work:

Undefined symbols for architecture x86_64:
  "cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)", 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)

I am running OS X 10.8.4 with latest XCode.

I have attached a few images below to show the setup in XCode and the libraries. So far it seems that other functions work fine with OpenCV, except this.


回答1:


I'm going to go out on a limb and say that you compiled OpenCV2 with libstdc++, and are now compiling your application with libc++ support.

You need to compile OpenCV2 with the same C++ library, otherwise it will not be able to link.

if you do an nm of the OpenCV2 library, if it was compiled with libstdc++, it will look like:

cv::imshow(std::string const&, cv::_InputArray const&)

while if it was compiled with libc++, it would look like:

cv::imshow(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cv::_InputArray const&)

to get the demangled symbol do:

nm library | c++filt | grep cv::imshow


来源:https://stackoverflow.com/questions/19119445/error-when-using-imshow-on-os-x

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!