4

我已经根据http://netbeans.org/community/releases/72/cpp-setup-instructions.html在我的 PC 上安装了 minGW ,并且我使用找到所有必要文件的 NetBeans 7.2 “恢复了默认值”。

但是,当我制作测试示例 C++ 应用程序时,出现以下错误:

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find   -ladvapi32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lshell32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -luser32 
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lkernel32 
collect2: ld returned 1 exit status 
make[2]: *** [dist/Debug/MinGW-Windows/welcome_1.exe] Error 1 
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

谁能帮我为 NetBeans 安装 openCV 和 minGW?

4

2 回答 2

7

如何使用 Netbeans 7.2 构建和使用 openCV。一步步

准备工作

在“c:\mingw\bin”和“c:\mingw\lib”

  • 搜索并删除所有 libopencv*.dll , libopencv*.dll.a , libopencv*.a

用以下程序测试

下载 OpenCV-2.4.2.exe (222.9 MB) http://sourceforge.net/projects/opencvlibrary/files/
下载 mingw-get-inst-20120426.exe (662.7 kB) http://sourceforge.net/projects/ mingw/files/
下载 cmake-2.8.9-win32-x86.zip http://www.cmake.org/files/v2.8/cmake-2.8.9-win32-x86.zip

本手册中使用的所有参考资料:

本手册中的所有引用均以“T:\”开头。请更改为实际驱动器号!(主要是 "c:\" )

  • C:\msys\1.0\src ---(如果不存在“msys”,则创建或使用“C:\mingw\src”)。
  • C:\mingw\bin

注意:
对于 msys-mingw 环境中的新项目,我总是使用“ C:\msys\1.0\src ”目录。
要具有相同的条件,gcc 也应该是“4.7.0”而不是“4.6.2”

  • 放在 PATH "C:\mingw\bin;C:\msys\1.0\bin;" 的前面

您可能已经注意到,您不能使用 OpenCV-2.4.2.exe 附带的库。
完全忽略文件夹“...\opencv\build\x86\mingw\bin”“...\opencv\build\x86\mingw\lib”

让我们获取新的 mingw 文件。

启动 mingw-get-inst-20120426.exe

用途:下载最新的存储库...

在此处输入图像描述

确保指定的目录正确,通常是“C:\mingw”。
如下所述进行检查。
如果你还需要msys,那么也要选择“MinGW Developer Toolkit”。

MinGW 安装

现在 MinGW-Get 下载所有新文件。(4.7.0)

运行“OpenCV-2.4.2.exe”

文件所在的文件夹应该是“c:\msys\1.0\src”。
这会将所有文件写入新目录“opencv”中。
新文件夹:“ C:\msys\1.0\src\opencv ”。从现在开始,这是我们的顶级目录

打开“ cmake-2.8.9-win32-x86.zip ”并将文件复制到您的 cmake 文件夹。

创建 Makefile

运行“ C:\cmake\bin\cmake-gui.exe

  • A:设置必填字段,点击“配置”
  • B:设置,点击“下一步” 在此处输入图像描述

  • 设置并点击“确定” 在此处输入图像描述

可能的错误:在您的 PATH 中找到了 sh.exe

  • A:错误“在您的 PATH 中找到了 sh.exe”
  • B:在“C:\msys\1.0\bin”或“C:\mingw\bin”中搜索sh.exe并重命名为“shxx.exe”

  • 再次单击“配置”。

在此处输入图像描述

一个可能的错误:CMAKE_MAKE_PROGRAM 未设置

  • 标记“CMAKE_MAKE_PROGRAM”并复制,点击“添加条目”

在此处输入图像描述

  • 粘贴,设置并单击“确定”
  • 再次单击“配置”。

在此处输入图像描述

现在它应该可以工作了。Cmake搜索编译环境

在此处输入图像描述

Cmake 显示选项页面

  • 滚动浏览红色选项。不要改变任何东西
  • 再次点击“配置”

在此处输入图像描述

让我们生成 Makefile

  • 点击“生成”

在此处输入图像描述

构建openCV

  • 运行“cmd”进入目录“C:\msys\1.0\src\opencv\build\mingw”。在那里输入“make”

在此处输入图像描述

请稍等!

在我的电脑上大约需要 4 个小时

在此处输入图像描述

检查所有文件是否在正确的位置

  • B: *.dll 在 "C:\msys\1.0\src\opencv\build\mingw\bin"
  • C: *.dll.a 在 "C:\msys\1.0\src\opencv\build\mingw\lib"

在此处输入图像描述

构建一个opencv程序

  • 在“C:\msys\1.0\src\opencv”中创建一个新文件夹“OpenCV-MakeC”
  • 在文件夹“OpenCV-MakeC”中创建一个“Makefile”和“imgdisplay.cpp”。

避免复制和粘贴错误。这里有2个文件供下载:

在此处输入图像描述

生成文件

MKDIR_P = C:/msys/1.0/bin/mkdir -p
DESTDIRB = build/Debug
DESTDIRD = dist/Debug
LIBDIRCV = ../build/mingw/lib
CFLAGS = -O2
CXX = C:/mingw/bin/g++.exe
Applic = imgdisplay

ALL: imgdisd

imgdisd:
    $(CXX) $(CFLAGS) -c -g $(Applic).cpp -I../build/include -MMD -MP -MF $(DESTDIRB)/$(Applic).o.d -o $(DESTDIRB)/$(Applic).o
    $(CXX) $(CFLAGS) -o $(DESTDIRD)/$(Applic) $(DESTDIRB)/$(Applic).o -L../build/mingw/bin $(LIBDIRCV)/libopencv_calib3d242.dll.a $(LIBDIRCV)/libopencv_contrib242.dll.a $(LIBDIRCV)/libopencv_core242.dll.a \
    $(LIBDIRCV)/libopencv_features2d242.dll.a $(LIBDIRCV)/libopencv_flann242.dll.a $(LIBDIRCV)/libopencv_gpu242.dll.a $(LIBDIRCV)/libopencv_highgui242.dll.a $(LIBDIRCV)/libopencv_imgproc242.dll.a \
    $(LIBDIRCV)/libopencv_legacy242.dll.a $(LIBDIRCV)/libopencv_ml242.dll.a $(LIBDIRCV)/libopencv_nonfree242.dll.a $(LIBDIRCV)/libopencv_objdetect242.dll.a $(LIBDIRCV)/libopencv_photo242.dll.a \
    $(LIBDIRCV)/libopencv_stitching242.dll.a $(LIBDIRCV)/libopencv_ts242.a $(LIBDIRCV)/libopencv_video242.dll.a $(LIBDIRCV)/libopencv_videostab242.dll.a 
md:
    $(MKDIR_P) "$(DESTDIRB)"
    $(MKDIR_P) "$(DESTDIRD)"

图像显示.cpp

/* 
 * File:   imgdisplay.cpp
 * Author: Administrator
 *
 * Created on 14. September 2012, 01:12
 */

#include <cstdlib>
#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace std;

int main( int argc, char* argv[] ) 
{

    cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    cvMoveWindow("mainWin", 100, 100);
    IplImage* img;
    img = cvLoadImage("D:/grafik/Lightroom/light01.jpg");
    if (!img) {
        std::cout << "Could not open the image file" << std::endl;
        return -1;
    }
    cvShowImage("My Picture", img); 
    cvWaitKey(0);
    cvReleaseImage(&img);
    return 0;
}

Netbeans 7.2 创建项目

  • 文件 -- 新项目

在此处输入图像描述

使用如下所述的设置。

在此处输入图像描述

创建项目

在此处输入图像描述

创建新目标

  • 在“Makefile”上单击鼠标右键

注意:如果你得到一个错误:Makefile:12: *** missing separator。停止。

主要是复制和粘贴错误!(确保起始行没有空格。但设置了 2 个选项卡)。

在此处输入图像描述

创建新文件夹

  • 在“Makefile”上单击鼠标右键
  • 使用新目标“md”

在此处输入图像描述

项目文件夹现在看起来像..

在此处输入图像描述

构建项目

在此处输入图像描述

调试项目

  • 复制需要的dll(C:\msys\1.0\src\opencv\build\mingw\bin 到T:\msys\1.0\src\opencv\OpenCV-MakeC\dist\Debug)

在此处输入图像描述

  • 打开 imgdisplay.cpp(双击)
  • 设置断点 第 17 行

    17 cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);

  • 单击调试按钮

在此处输入图像描述

程序在 17 号线停靠

在此处输入图像描述

未解析的标识符

如果 .cpp 文件的源代码如下所示

在此处输入图像描述

在您的项目上单击鼠标右键。
检查C/C++ Code As...
运行 Reparse Project.

在此处输入图像描述

如果这还不够。
转到按照说明Project Properties
填写Include输入字段。

在此处输入图像描述

清理

  • 如果您将 sh.exe 重命名为 shxx.exe !重命名回来!
  • 如果您的 PATH 变量中有空格,请在空格周围加上引号(仅在 Visual Studio 等相关程序周围)。
    我知道它们不是必需的,但是一两个程序无法处理
    PATH 中的空格!
  • 在一个
于 2012-09-20T03:07:27.867 回答
2

它也发生在我身上,但不是使用makeI used mingw32-make,而是它起作用了。

您可以mingw32-make使用安装mingw-get install mingw32-make

于 2012-10-12T14:13:52.593 回答