我刚刚花了令人沮丧的很长一段时间让 openCV 在 Ubuntu 12.04 中正确链接,并认为我会分享我学到的东西以造福他人。
OpenCV 现已在 Ubuntu 存储库中提供,如下所示
sudo apt-get install libopencv-dev
这很棒,但我相信(如果我错了,请纠正我)这个版本的 opencv 对库有不同的命名约定。主要区别在于,在 C++ 中,include 行应为
#include "opencv2/opencv.hpp"
这将使您的代码编译为对象但不链接。另一个区别是静态库也已重命名为libcv* to libopencv*。例如,二进制文件现在可以位于
/usr/lib/libopencv_core.so
/usr/lib/libopencv_highgui.so
.
.
.
为了解决这个问题,我需要通过将编译器命令更改为来显式告诉链接器新的库名称
g++ main.cpp -lopencv_core -lopencv_highgui ...
或者在CMake中
target_link_libraries(main opencv_core opencv_highgui ...)
我希望这有帮助。如果有人比我了解更多,我很想知道这里发生了什么。
-Mike