【问题标题】:openCV error : undefined reference to `cvLoadImage' UbuntuopenCV 错误:未定义对 `cvLoadImage' Ubuntu 的引用
【发布时间】:2012-04-23 02:15:37
【问题描述】:

我已经安装了 openCV 库,但仍然出现错误
$ g++ -I /usr/include/opencv/ -L -lcxcore -lhighgui hello.cpp -o hello
/tmp/ccjjrbXr.o:在函数main': hello.cpp:(.text+0x2d): undefined reference tocvLoadImage'
collect2: ld 返回 1 个退出状态

当我检查我得到的库的路径时
$ pkg-config --libs opencv
-lml -lcvaux -lhighgui -lcv -lcxcore

我写了一个非常简单的程序来测试它:

enter code here

#include< cv.h>  
#include< highgui.h> /* required to use OpenCV's highgui */
#include< stdio.h>

int main() { 
    IplImage* img = 0;
    printf("Hello\n");
    img = cvLoadImage("lena.jpg", 0 );
}

我的安装有问题,但我真的无法弄清楚。任何指导将不胜感激! 谢谢


当我跑步时:

$ pkg-config --cflags --libs opencv
-I/usr/local/include/opencv -I/usr/local/include
/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so 
/usr/local/lib/libopencv_core.so /usr/local/lib/libopencv_features2d.so 
/usr/local/lib/libopencv_flann.so /usr/local/lib/libopencv_gpu.so 
/usr/local/lib/libopencv_highgui.so /usr/local/lib/libopencv_imgproc.so 
/usr/local/lib/libopencv_legacy.so /usr/local/lib/libopencv_ml.so 
/usr/local/lib/libopencv_nonfree.so /usr/local/lib/libopencv_objdetect.so 
/usr/local/lib/libopencv_photo.so /usr/local/lib/libopencv_stitching.so 
/usr/local/lib/libopencv_ts.so /usr/local/lib/libopencv_video.so 
/usr/local/lib/libopencv_videostab.so  

但是当我跑步时:

$ g++ 'pkg-config --cflags --libs opencv' display_image.cpp
g++: error: pkg-config --cflags --libs opencv: No such file or directory

OpenCV 似乎已安装,但问题仍然存在。

【问题讨论】:

    标签: c++ c opencv ubuntu image-processing


    【解决方案1】:

    您使用了单引号 ' 而不是 backquotes/backticks `。这是更正后的命令:

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

    【讨论】:

      【解决方案2】:

      如果您正在使用它,最好链接到 highgui 库 -lhighgui

      【讨论】:

      • 对不起,我实际上已经输入了链接所有的库,但是在进入论坛时出错了。它仍然给出同样的错误:'** g++ -I /usr/include/opencv/ -L -lhighgui hello.cpp -o hello /tmp/ccw90mKu.o: In function main': hello.cpp:(.text+0x2d): undefined reference to cvLoadImage' collect2: ld returned 1 exit状态'**
      • @user1111044 - 那么它可能找不到库。如果您使用“-L”,您不必指定目录吗?这可能会阻止标准 LD_LIBRARY_PATH 搜索
      • 是的,这正是我面临的问题。我没有与 -L 一起使用的文件夹。
      • 可能是/usr/local/lib 但请参阅opencv.willowgarage.com/wiki/InstallGuide_Linux
      • nah..所有这些都试过了。但是非常感谢 Martin 的帮助!
      【解决方案3】:

      这个命令:

      g++ 'pkg-config --cflags --libs opencv' display_image.cpp
      

      与此不同:

      g++ `pkg-config --cflags --libs opencv` display_image.cpp
      

      因为 ` 和 ' 字符...

      如果你不想弄乱这些字符,你可以使用

      g++ $(pkg-config --cflags --libs opencv) display_image.cpp
      

      更容易可视化

      【讨论】:

        【解决方案4】:

        试试 g++ -g -o mypro progname.cpp pkg-config opencv --cflags --libs

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-11-13
          • 2015-01-30
          • 1970-01-01
          • 1970-01-01
          • 2015-12-08
          • 2012-06-23
          • 2019-10-25
          相关资源
          最近更新 更多