对`cv :: imwrite(...)'的未定义引用

时间:2017-12-05 22:47:49

标签: c++ opencv compilation cmake linker-errors

我想编译doppia,它将OpenCV作为依赖项。目前我使用的是OpenCV 2.4.9.1,这是Ubuntu 16.04的默认设置。除了对函数imwrite的引用外,一切正常。

...

[100%] Linking CXX executable objects_detection

undefined reference to `cv::imwrite(std::string const&, cv::_InputArray const&, std::vector<int, std::allocator<int> > const&)'

collect2: error: ld returned 1 exit status
CMakeFiles/objects_detection.dir/build.make:103: recipe for target 'objects_detection' failed
make[2]: *** [objects_detection] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/objects_detection.dir/all' failed
make[1]: *** [CMakeFiles/objects_detection.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

抛出错误的文件是IntegralChannelsDetector.cpp。 其中包括opencv2/imgproc/imgproc.hppopencv2/highgui/highgui.hpp

运行pkg-config opencv --cflags --libs也会返回所有模块都正确链接。

研究我的错误我了解到,如果我使用OpenCV 3.x,我必须包含img_codecs模块,但OpenCV 2.x不是这种情况。我担心出于兼容性原因我会被卡在2.x上。

还有什么东西可以尝试让链接过程完成吗?

0 个答案:

没有答案