OpenCV构建错误

时间:2012-02-18 21:57:47

标签: opencv cygwin

如果这里不合适,想知道我在Cygwin(Windows 7 64位)下构建OpenCV时遇到的错误来源和修复错误。

我安装了Cygwin,并在cygwin安装中安装了MingW-pthread pacgae。

我已经下载了OpenCV ver。 2.3.1源包。

修改

经过一些调整,以及构建过程的变化OpenCV现在构建得很好。 但是当我编译一个简单的测试openCV代码(C源代码)时,如下所示,它给许多基本openCV函数的未定义引用提供了许多链接器错误。我尝试正确设置LD_LIBRARY_PATH,但仍然存在错误:

cc -L/usr/local/lib -I/usr/local/include/opencv2 -/usr/local/include/opencv -lop                                                                                                                encv_imgproc -lopencv_highgui -lopencv_video -lopencv_calib3d test1.c -o test_op                                                                                                                encv
cc: unrecognized option '-/usr/local/include/opencv'
/tmp/ccfEqFK0.o:test1.c:(.text+0x9dd): undefined reference to `_cvFree_'
/tmp/ccfEqFK0.o:test1.c:(.text+0xa4e): undefined reference to `_cvFree_'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb44): undefined reference to `_cvGetRows'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb6f): undefined reference to `_cvGetCols'
/tmp/ccfEqFK0.o:test1.c:(.text+0xb82): undefined reference to `_cvReleaseMat'
/tmp/ccfEqFK0.o:test1.c:(.text+0xcd2): undefined reference to `_cvAddS'

/tmp/ccfEqFK0.o:test1.c:(.text+0x1137): undefined reference to `_cvRead'
/tmp/ccfEqFK0.o:test1.c:(.text+0x11e1): undefined reference to `_cvLoadImage'
/tmp/ccfEqFK0.o:test1.c:(.text+0x129d): undefined reference to `_cvCreateImage'
/tmp/ccfEqFK0.o:test1.c:(.text+0x12dd): undefined reference to `_cvResize'
/tmp/ccfEqFK0.o:test1.c:(.text+0x12f1): undefined reference to `_cvNamedWindow'
/tmp/ccfEqFK0.o:test1.c:(.text+0x1305): undefined reference to `_cvNamedWindow'
                                           '
/tmp/ccfEqFK0.o:test1.c:(.text+0x13ad): undefined reference to `_cvDestroyWindow                                                                            

...... ......还有更多未定义的引用。

                              '
collect2: ld returned 1 exit status
Makefile:10: recipe for target `test_opencv' failed
make: *** [test_opencv] Error 1

修改

下面的消息仍然存在,但它不是错误,而是构建过程中的消息。

*然后在cygwin下构建OpenCV时,当我做的时候,它会给出一条错误信息     c ++:无法识别的选项'-pthread'     [36%]构建CXX对象模块/ highgui / CMakeFiles / opencv_highgui.dir / src / grfmt_sunras.o *

对于许多其他文件,我看到相同的错误c++: unrecognized option '-pthread'

我想知道是否有人有在Cygwin下构建openCV的经验,如何让OpenCV进入cygwin? 。现在我知道有OpenCV的Windows设置,但这不是我的选择。

2 个答案:

答案 0 :(得分:1)

你的cmd行参数有一些问题。它似乎没有完全粘贴在你的问题中(一些缩进问题暗示如此)。

  • 由于CC正在告诉您有关它的一个明显错误:cc: unrecognized option '-/usr/local/include/opencv'

在命令行中添加标题目录时,必须使用 -I 指定每个目录。请注意您未能如何使用:-/usr/local/include/opencv。它应该是-I/usr/local/include/opencv

  • 您似乎也在cmd-line
  • 中缺少-lopencv_core

将来,使用 pkg-config (如果配置正确)来帮助您包含opencv标头和库:

cc test.c -o test_op `pkg-config --cflags --libs opencv` -lop  

答案 1 :(得分:0)

感谢指点: 我发现的问题如下:

在我的openCV测试应用程序的Makefile中,我链接了导入库(* .a)。这是问题所在。

有问题的Makefile正在链接文件

-l:/usr/local/lib/libopencv_core.dll.a ...etc...

我将其更改为与实际的dll库链接,然后它工作(链接)正常,没有上述任何错误。

更改Makefile外观:

LIBS = -l:/usr/local/bin/cygopencv_core-2.3.dll -l:/usr/local/bin/cygopencv_imgproc-2.3.dll -l:/usr/local/bin/cygopencv_highgui-2.3.dll -l:/usr/local/bin/cygopencv_video-2.3.dll -l:/usr/local/bin/cygopencv_calib3d-2.3.dll