我是OpenCV的新手,我遇到了连接问题.
我正在使用Ubuntu 11.10,根据本指南安装了OpenCV 2.3.1 :
我正在使用它构建许多小应用程序,它看起来很好.通常,我正在建设pkg-config --libs --cflags opencv.
现在,我正在尝试构建一些其他人编写的框架,它编译没有任何问题,但我无法链接它:有一长串的"未解决的引用..."(数以千计).找不到与opencv_core相关的所有符号.
我试图在没有预编译头支持的情况下重新编译OpenCV,没有帮助.当然.:(
test_opencv_core应用程序运行正常,但opencv_rand失败.我认为它通常说opencv_core是正确的,但是当我需要它时它仍然不起作用......
你可以试着给我一些提示吗?我在那里迷路了.
大卫先生,谢谢你
更新:解决了.
gcc 4.6.1要求在修改共享库之前,libs和source将在命令行中显示.为什么?不知道.这个愚蠢的错误花了24小时:(
更新:可以理解. 从ld手册页:
链接器将仅在命令行上指定的位置搜索一次存档.如果存档定义了在命令行上存档之前出现的某个对象中未定义的符号,则链接器将包含存档中的相应文件.但是,稍后在命令行中出现的对象中的未定义符号将不会导致链接器再次搜索存档.
请参阅 - (用于强制链接器多次搜索存档的方法的选项).
而已.
我正在使用 Opencv,试图复制一些从网络摄像头捕获的帧。复制框架时__memcpy_ssse3(),第 160 行或 1675 行出现分段错误。
gdb 显示:
0 __memmove_ssse3 () 在 ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:1675
1 0xb75ec6d0 在 cv::Mat::copyTo (this=0xbfca3450, _dst=...) 在 /home/david/opencv/OpenCV-2.4.2/modules/core/src/copy.cpp:181
2 0xb75984f6 在 cv::Mat::Mat (this=0xbfca358c, img=0xb1300c90, copyData=true) 在 /home/david/opencv/OpenCV-2.4.2/modules/core/src/matrix.cpp:510
调用它的函数是cv::MAt::Mat(IplImg *I, bool copy)。
当我打开 USB 摄像头或文件时,一切都很完美,但是当尝试通过 IP 从网络摄像头读取视频流时,它会在一分钟后崩溃。
我尝试在不支持 ssse3 的情况下构建 ffmpeg 和 opencv,并且我的应用程序也使用-mno-seee3标志编译。
Opencv版本是2.4.2,但是2.3.1也存在这个问题。ffmpeg 版本是 11.1,8.X 也有同样的问题。gcc 版本是 4.6.3,Ubuntu 的分支。处理器是Intel core2。
任何提示?