如果这里不合适,想知道我在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设置,但这不是我的选择。
答案 0 :(得分:1)
你的cmd行参数有一些问题。它似乎没有完全粘贴在你的问题中(一些缩进问题暗示如此)。
cc: unrecognized option '-/usr/local/include/opencv'
:在命令行中添加标题目录时,必须使用 -I
指定每个目录。请注意您未能如何使用:-/usr/local/include/opencv
。它应该是-I/usr/local/include/opencv
-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