用Windows 7 64bit上的MinGW gcc / g ++编译openCV 2.3.1程序

我一直在努力编译openCV程序。 我已经尝试了所有可能在互联网上find的东西。

我所做的是:我已经下载了OpenCV-2.3.1-win-superpack.exe,并遵循这个正式的安装指南 。

在CMake(gui)我的来源是:D:\ opencv和生成目标是:C:\ opencv。

我还添加了C:\ opencv \ install \ bin; C:\ opencv \ bin到我的系统的PATHvariables中。

我想要的是使用MinGW的gcc / g ++编译器在我的Windows操作系统上编译openCV程序。

我已经尝试了在互联网上find的各种gcc / g ++参数,并且使用-I和-L选项编译器无法findopenCV函数或结构。

我正在编译的内容是:

#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; } 

错误:

input

 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 ++:

input

 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编译我得到同样的错误。

感谢您的时间!

Solutions Collecting From Web of "用Windows 7 64bit上的MinGW gcc / g ++编译openCV 2.3.1程序"

如果有其他人需要解决这个问题,下面是我如何得到张贴的OpenCV / HighGUI示例代码使用MinGW,MSYS和CMake在Windows 7 x64中编译:

  1. 使用MinGW / MSYS / CMake从源码构建OpenCV。 这是因为我无法在MinGW / MSYS / Windows 7 x64中正确链接OpenCV-win-SuperPack中的MinGW编译版本。

    为了全面参考,下面是我编译OpenCV的方法:

    • 确保你有一个最新的CMake(v2.6或更高版本)和MinGW(与GCC,G ++和MSYS选项)安装
    • 如果你想要新的基于Qt的OpenCV HighGUI前端,你需要安装Qt 4(SDK)。
    • 下载一个OpenCV源码/超级版本2.2或更高版本(我使用OpenCV-2.3.1-win-superpack.exe)
    • 将内容解压到[OPENCV_SOURCE_DIR](我把它放在C:/ opencv中,例如C:/ opencv / README中应该有一个文件)
    • 在别处创建一个[OPENCV_BUILD_DIR]目录(我用C:/ opencv / build / mingw)
    • 使用CMake-GUI工具,将源目录指定为[OPENCV_SOURCE_DIR],将生成目录指定为[OPENCV_BUILD_DIR],然后单击“配置”。
    • 您可能希望/需要调整选项(例如,我勾选“Qt”和“Qt-OpenGL”条目,然后再次单击“配置”,然后必须提供qmake可执行文件的路径)
    • 一旦你完成了OpenCV的配置,点击“Generate”
    • 在MSYS终端中,浏览到[OPENCV_BUILD_DIR],然后运行“make”生成代码(这可能需要一段时间)
    • 一旦构建正确,运行“make install”,它会将构建的代码/库/包括目录收集到[OPENCV_BUILD_DIR] /安装文件夹(如果在使用CMake-GUI工具时更改了相应的选项,
    • 将[OPENCV_BUILD_DIR] / install / bin文件夹添加到PATH环境变量中。 如果你不知道如何做到这一点,那么我建议使用路径编辑器GUI工具。
    • 如果你最终使用Qt,你还需要将Qt SDK的bin文件夹放在PATH环境变量中。 这是包含qmake.exe的文件夹。
  2. 将下面的示例代码放到名为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; } 
  3. 在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/

你有一个目录C:\opencv\install\bin来在gcc / g++命令行上找到库,但是我想你也需要指定这些库作为链接器输入。 我不确定哪些库是OpenCV发行版的一部分,但通过链接到说明页上的示例,可能是:

  -lopencv_calib3d220.dll 

您可能需要添加一个或多个其他的(在C:\opencv\install\bin目录中的名称模式为lib*.a的文件),或者您应该在-L选项中传递的其他lib目录)。