其他分享
首页 > 其他分享> > 解决undefined reference to `cv::imread(std::string const&, int)'

解决undefined reference to `cv::imread(std::string const&, int)'

作者:互联网

目录

问题

报错信息: undefined reference to cv::imread(std::string const&, int)
出现了如上错误我还以为是opencv的链接出现问题,便一直试图解决导入opencv,尝试了多种方式链接库,但最终一直会出现该报错
最终发现是代码的问题

解决方案

是代码中#define _GLIBCXX_USE_CXX11_ABI 0导致了该报错,去掉就可以正常运行了

进一步测试

windows

windows中使用Clion,从CMakeList中去掉set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")的话,就是出现如下报错
undefined reference to cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)
如果加上了,就和一开始的报错一致
暂时无法解决

在Visual Studio的CMakeLists中无论是否加入set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")都可以正常运行

linux

在linux下不要设置 _GLIBCXX_USE_CXX11_ABI,正常运行

原因

原因暂时不详,日后解决

标签:std,GLIBCXX,USE,CXX11,const,undefined,ABI,FLAGS,CMAKE
来源: https://www.cnblogs.com/zhangwc020/p/15707617.html