一周以来,我一直在努力编译openCV程序。我已经尝试过在互联网上可能找到的一切。
我做的是:我已下载OpenCV-2.3.1-win-superpack.exe并关注this official installation guide。
在CMake(gui)中,我的来源是:D:\ opencv和构建目标是:C:\ opencv。
我还将C:\ opencv \ install \ bin; C:\ opencv \ bin添加到我系统的PATH变量中。
我想要的是使用MinGW的gcc / g ++编译器在我的Windows操作系统上编译openCV程序。
我已经尝试了各种gcc / g ++参数,我在互联网上找到这些参数,并且几天玩-I和-L选项,编译器永远无法找到openCV函数或结构。
我想编译的内容:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char *argv[])
{
// Nothing but create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
cvWaitKey(0);
return 0;
}
错误:
输入:
gcc test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin"
输出:
...\ccK4MfHv.o:test.c:(.text+0xa0b): undefined reference to `cvFree_'
或者使用g ++:
输入:
g++ test.c -o test -I"C:\opencv\install\include" -I"C:\opencv\install\include\opencv" -L"C:\opencv\install\bin"
输出:
...\ccXCTKa1.o:test.c:(.text+0x1e): undefined reference to `cvNamedWindow'
旁注:尝试在VS2005中编译我得到了同样的错误。
感谢您的时间!
答案 0 :(得分:5)
如果其他人需要解决这个问题,这里是我如何使用MinGW,MSYS和CMake在Windows 7 x64中编译已发布的OpenCV / HighGUI示例代码:
使用MinGW / MSYS / CMake从源代码构建OpenCV。这是因为我无法让OpenCV-win-SuperPack中的MinGW编译版本在MinGW / MSYS / Windows 7 x64中正确链接。
完整参考,以下是我编译OpenCV的方法:
将以下示例代码放入名为test.c的文件中。我稍微修改了包含,使它们与OpenCV v2.2及更高版本兼容。
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main(int argc, char *argv[])
{
// Nothing but create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
cvWaitKey(0);
return 0;
}
在MSYS终端中,浏览到放置test.c的文件夹,然后运行:
gcc -o test -I"[OPENCV_BUILD_DIR]/install/include" test.c \
-L"[OPENCV_BUILD_DIR]/install/lib" \
-lopencv_core[OPENCV_VERSION] \
-lopencv_imgproc[OPENCV_VERSION] \
-lopencv_highgui[OPENCV_VERSION]
所以在我的情况下:
gcc -o test -I"/c/opencv/build/mingw/install/include" test.c \
-L"/c/opencv/build/mingw/install/lib" \
-lopencv_core231
-lopencv_imgproc231
-lopencv_highgui231
路径编辑器:http://www.redfernplace.com/software-projects/patheditor/
答案 1 :(得分:0)
您有C:\opencv\install\bin
/ gcc
命令行上的库目录,但我认为您还需要指定要用作链接器输入的库同样。我不确定哪些库是OpenCV发行版的一部分,但是在您链接到的指令页面上的示例中,可能是:
g++
您可能必须添加一个或多个其他的(在 -lopencv_calib3d220.dll
目录中的名称模式lib*.a
- 或者您应该传递的其他C:\opencv\install\bin
目录在lib
选项中。