您的位置:首页 > Web前端

fedora 15 安装opencv2.2时出现undefined reference to `cvCreateCameraCapture_V4L(int)'问题及其解决方法

2011-07-22 12:26 836 查看
在Fedora 15 下编译OpenCV 2.2
进行到7%左右时出现"ptrdeff_t"未定义都错误,考虑到之前在Fedora 14下编译没问题,可能是内核升级后头文件包含出现变动,所以才没有包含进stddef.h头文件。找到出错文件,就我的情况而言是:OpenCV-2.2.0/modules/core/include/opencv2/core/core.hpp
在该文件的合适位置加上语句:
#include<stddef.h>

继续编译,到81%左右出现了undefined reference to `cvCreateCameraCapture_V4L(int)'错误.

参考 https://code.ros.org/trac/opencv/ticket/324
In some linux distros where V4L2 is enabled, CMake does not define the H***E_CAMV4L macro, but the macro H***E_CAMV4L2 is defined.
When the highgui.so is building and linked with an other program, a Link error undefined reference to cvCreateCameraCapture_V4L is detected, and the library is not finished. The compilation terminated at [ 83%] Building.

解决方法(推荐使用第二种方法):

下载的源代码里面找到OpenCV-2.2.0/modules/highgui/src/cap_v4l.cpp
oldnew
214214#include <sys/types.h>
215215#include <sys/mman.h>
216216
217#ifdef H***E_CAMV4L //我们自己加上去
217218#include <linux/videodev.h>
219#endif //我们自己加上去
218220
219221#include <string.h>
220222#include <stdlib.h>
[code]下载的源代码里面找到OpenCV-2.2.0/modules/highgui/src/cap.cpp
oldnew
171171if (capture)
172172return capture;
173173#endif
174//把本行后面的删掉,就变成本行下面的一行#if defined (H***E_CAMV4L) || defined (H***E_CAMV4L2)
174#if defined (H***E_CAMV4L)
175175capture = cvCreateCameraCapture_V4L (index);
176176if (capture)
177177return capture;
实际上就是修改第174行。

参考文献
http://blog.csdn.net/moc062066/article/details/6616902
https://code.ros.org/trac/opencv/ticket/324
http://www.eefocus.com/DSP_geek/blog/10-12/200665_09816.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐