OpenCV "未定义的引用'cv::imread' 等 C++



所以我写了一些非常基本的OpenCV c++代码来测试它的功能。我在Linux Ubuntu 16.04上使用CodeBlocks。我已经正确安装了OpenCV,我认为,Codeblocks在制作项目时提供了"OpenCV项目"作为选项,每当我开始输入OpenCV关键字时,它就会展开并建议关键字。

我的问题是,当我试图构建它时,我得到

undefined reference to `cv::imread(std::__cxxll::basic_string<char, std::char_traits<ch..

对于每个opencv函数都重复此操作。

我在某处读到这可能与存档文件有关,所以我将在输入

时提供结果:
pkg-config opencv --libs

进入终端。输出为:

-L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core 
-lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui 
-lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree 
-lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching 
-lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -latomic 
-ltbb -lGL -lGLU -lrt -lpthread -lm -ldl

那么我该如何解决这个问题呢?我应该以某种方式编辑我的文件吗?

您的代码已经使用使用std::__cxx11命名空间的标准库进行了编译。例如,您可能正在使用g++ 5+,它与以前的版本具有不同的ABI。您安装的opencv库可能是较旧的ABI,因此不兼容。

您可以自己编译opencv库,使用与您拥有的库的ABI匹配的较早的编译器,或者配置编译器使用旧的ABI。

如果使用g++ 5,可以使用宏_GLIBCXX_USE_CXX11_ABI。在包含和std库之前:

#define _GLIBCXX_USE_CXX11_ABI 0

最新更新