我只花了很长时间才能让openCV在Ubuntu 12.04中正确链接,并且我认为我会为了别人的利益分享我学到的东西.
OpenCV现在可以在Ubuntu存储库中使用
sudo apt-get install libopencv-dev
这很棒,但我相信(请纠正我,如果我错了)这个版本的opencv有不同的库命名约定.主要区别在于c ++中的include行应该读取
#include "opencv2/opencv.hpp"
这将使您的代码编译为对象但不链接.另一个区别是静态库也已从libcv*重命名为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 ...)
我希望这有帮助.如果有人比我更了解,我很想知道这里发生了什么.
-麦克风
就个人而言,我正在使用'pkg-config'来获取编译标志.
g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main
主要的例子:
#include <stdio.h>
#include <cv.h>
int main(void)
{
    printf("%s\r\n", CV_VERSION);
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION);
}