所以我编写了一些非常基本的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
那我怎么解决这个问题呢?我应该以某种方式编辑我的文件吗?
非常感谢
答案 0 :(得分:2)
您的代码已使用标准库使用std :: __ cxx11命名空间进行编译。即,您可能正在使用g ++ 5+,它与以前的版本具有不同的ABI。您安装的opencv库可能是较旧的ABI,因此不兼容。
您可以自己编译opencv库,使用与您拥有的库的ABI匹配的早期编译器,或者将编译器配置为使用旧的ABI。
如果您使用g ++ 5,则可以使用宏_GLIBCXX_USE_CXX11_ABI。在包含和std库之前:
#define _GLIBCXX_USE_CXX11_ABI 0