当我尝试编译在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
有人可以告诉我如何使用代码块来运行相同的代码。
谢谢!
答案 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:
此博客文章介绍了如何在Ubuntu Linux环境中安装OpenCV并配置它对Code :: Blocks的使用:
http://www.technical-recipes.com/2014/using-opencv-in-codeblocks-in-linux/