【问题标题】:Linking errors when compiling code with OpenCV Libraries使用 OpenCV 库编译代码时出现链接错误
【发布时间】:2010-12-30 04:14:56
【问题描述】:

我正在尝试使用以下命令安装 Opencv 后编译示例程序:

g++ hello-world.cpp -o hello-world -I /usr/local/include/opencv -L /usr/local/lib -lm -lcv -lhighgui -lcvaux

但是,我收到一条错误消息:

/usr/bin/ld: cannot find -lcv  
/usr/bin/ld: cannot find -lhighgui  
/uer/bin/ld: cannot find -lcvaux
collect2: ld returned 1 exit status

我需要做什么来纠正这个问题?我通过下载最新的稳定版本并使用 cmake 创建构建文件来安装 opencv,然后从命令行运行 make install。

有什么我可能错过的吗?

【问题讨论】:

    标签: c++ opencv compilation


    【解决方案1】:

    更新-

    最好使用这个命令:

    g++ opencv.cpp -o opencv -L `pkg-config --cflags --libs opencv`
    

    pkg-config 命令将为您的源代码找到正确的包含和库。
    为了更好地处理 OpenCV 编程,请使用像 code::block 这样的 IDE。

    也许本教程将帮助您使用 code::block 进行 OpenCV 编程:
    How to Setup OpenCV for code :: block in Linux and Windows?

    【讨论】:

    • 对于 OpenCV 4,您应该使用 g++ opencv.cpp -o opencv -L `pkg-config --cflags --libs opencv4`
    【解决方案2】:

    最近我开始使用 OpenCV,遇到了类似的问题,对我来说效果很好:

    -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect
    

    希望它能解决你的问题。

    【讨论】:

    • 加上 -lopencv_videoio 这对我有用,但我不明白为什么我们需要这样做?我的意思是我已经包含了库并且 pkg-config 列出了所有库。我最近开始学习 c++,但这与其他语言有很大不同。
    【解决方案3】:

    您需要添加另一个 -L 参数来指定 OpenCV 库的实际位置。

    【讨论】:

    • 所以不是 -L /usr/local/lib 有 -L ?或额外的 -L... 我在哪里可以找到这些库?当我进行 make install 时,它显示所有文件都是最新的并且位置...但是有很多不同的东西...所有 .h 文件都在 /usr/local/include/opencv...库文件有不同的扩展名吗?
    • 通过cmake输出找出来。
    • 感谢您的快速回复 - 编辑了我上面的评论,但当我这样做时,您已经回复了。我想我可能不清楚我真正在寻找什么。当我进行 make install 时,它显示所有文件都是最新的并且位置...但是有很多不同的东西...所有 .h 文件都在 /usr/local/include/opencv...库文件有不同的扩展名吗?
    • 好的,所有这些似乎都在 /usr/local/lib/ - 让我试试这个 - 谢谢
    • 那么你的-l 参数是错误的。试试-lopencv_highgui 之类的。
    猜你喜欢
    • 2021-11-08
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多