2011-05-20 60 views
1

OpenCV的程序时,当我尝试编译它使用了OpenCV库中的代码块C++程序它给了我一个运行时错误运行时错误我已经使用Code Blocks IDE的链接器设置(包括名为libopencv_calib3d.so.2.2这是一个符号链接)添加了所有必需的库。编码使用代码块在linux

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

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

谁能告诉我我如何能得到运行使用相同的代码块。

谢谢!

回答

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 
+0

谢谢!但我认为我使用g ++时手动为我工作。不过,我正在尝试使用代码块IDE编译我的代码。那么有没有什么办法可以在CodeBlocks中将libcv,libhighgui,libcvaux等与OpenCV 2.2永久关联? – 2011-05-20 12:28:19

+0

不,因为这些库是*不*是OpenCV 2.2的一部分,你应该摆脱它们!它们来自旧版本的OpenCV,从长远来看它们只会给你带来麻烦。 – ypnos 2011-05-23 11:16:31

0

我会建议安装Linux版,2.4.9例如合理了最新版本的OpenCV的,在这个时候写作,看起来是用当前版本的gcc构建的(4.8.2)。要完成一个简单的OpenCV示例并在Code :: Blocks中运行,需要完成几个步骤。 OpenCV的文档告诉你你的OpenCV的根目录下,运行cmake中创建一个build目录,制作,须藤使安装等,以生成您的项目可能需要链接到库,包括你提到的libopencv_calib3d.so:

enter image description here

此博客中给出了如何安装OpenCV和配置它的使用的代码::块在Ubuntu Linux环境中的解释:

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