使用linux中的codeBlocks编写OpenCV程序时的运行时错误

时间:2011-05-20 11:51:52

标签: c++ linux opencv codeblocks

当我尝试编译在CodeBlocks中使用openCV库的C ++程序时,它会给我一个运行时错误:

error while loading shared libraries: libopencv_calib3d.so.2.2: 
cannot open shared object file: no such file or directory

尽管我已经使用代码块IDE的链接器设置添加了所有必需的库(包括名为libopencv_calib3d.so.2.2的符号链接)。

但是我可以通过发出命令使用命令行编译程序:

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

有人可以告诉我如何使用代码块来运行相同的代码。

谢谢!

2 个答案:

答案 0 :(得分:2)

文件libopencv_calib3d.so.2.2是OpenCV 2.2的一部分。但是,OpenCV 2.2中没有libcv,libhighgui或libcvaux部分。这意味着您的g ++调用链接另一个版本的OpenCV。

要链接OpenCV 2.2,您需要-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann等标记。

您也不应手动将它们放入,而是使用

export PKG_CONFIG_PATH=/usr/local/share/opencv/:$PKG_CONFIG_PATH
g++ `pkg-config --cflags --libs opencv` hello-world.cpp -o hello-world

答案 1 :(得分:0)

我建议安装一个合理的最新版本的OpenCV for Linux,例如2.4.9,在撰写本文时,似乎是用我当前版本的gcc(4.8.2)构建的。为了在Code :: Blocks中启动并运行一个简单的OpenCV示例,您需要完成几个步骤。 OpenCV文档告诉您在OpenCV根目录中创建一个构建目录并运行cmake,make,sudo make install等,以生成项目可能需要链接的库,包括你提到的libopencv_calib3d.so:

enter image description here

此博客文章介绍了如何在Ubuntu Linux环境中安装OpenCV并配置它对Code :: Blocks的使用:

http://www.technical-recipes.com/2014/using-opencv-in-codeblocks-in-linux/