与libstdc ++相关的OpenCV应用程序崩溃 - 6.dll

时间:2013-09-11 21:37:35

标签: c++ opencv windows-7 eclipse-cdt mingw32

我是opencv,C ++和eclipse CDT的首发。我正在学习opencv的教程。但是,虽然我成功编译了程序,但在执行后很快就崩溃了。我阅读了许多相关的Q& A但没有得到有效的解决方案。任何建议都非常感谢。以下是一些供您参考的规范:

系统设置

  • 操作系统:32位Windows 7专业版(虚拟机)
  • IDE :Eclipse Kepler的CDT 8.2.0
  • C / C ++编译器:mingw32-gcc(4.8.1)
  • OpenCV Package :opencv2.4.6

详细程序

  • 下载并解压缩Eclipse
  • 将MinGW安装到C:\ MinGW。设置" C:\ MinGW \ bin"到系统路径[路径]
  • 将OpenCV下载并执行到C:\ opencv。设置" C:\ opencv \ build \ x86 \ mingw \ bin"到系统路径[路径]
  • 在Eclipse中启动Eclipse:
    • 文件>新的> C ++项目:项目名称 - > OpenCVTest,项目类型 - > Hello World C ++项目,工具链 - > MinGW GCC
    • 完成
    • 项目>属性> C / C ++构建>设置>工具设置> GCC C ++编译器>包含>包含路径(-I)我添加了" C:\ opencv \ build \包括"
    • 项目>属性> C / C ++构建>设置>工具设置> MinGW C ++链接器>库>库(-l)我一个接一个地添加了opencv_core246,opencv_highgui246和opencv_imgproc246。
    • 项目>属性> C / C ++构建>设置>工具设置> MinGW C ++链接器>库>库搜索路径(-L)我添加了" C:\ opencv \ build \ 86 \ mingw的\ lib中"
  • 使用以下内容替换OpenCVTest.cpp文件内容:

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    
    int main( int argc, char** argv )
    {
        if( argc != 2)
        {
         cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
         return -1;
        }
    
        Mat image;
        image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file
    
        if(! image.data )                              // Check for invalid input
        {
            cout <<  "Could not open or find the image" << std::endl ;
            return -1;
        }
    
        namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
        imshow( "Display window", image );                   // Show our image inside it.
    
        waitKey(0);                                          // Wait for a keystroke in the window
        return 0;
    }
    
  • 构建项目并获得以下控制台输出(假定成功):

    信息:内部构建器用于构建 g ++&#34; -IC:\ opencv \ build \ include&#34; -O0 -g3 -Wall -c -fmessage-length = 0 -o&#34; src \ OpenCVTest.o&#34; &#34; .. \ SRC \ OpenCVTest.cpp&#34; g ++&#34; -LC:\ opencv \ build \ x86 \ mingw \ lib&#34; -o OpenCVTest.exe&#34; src \ OpenCVTest.o&#34; -lopencv_core246 -lopencv_highgui246 -lopencv_imgproc246

  • 运行生成的.exe而不传递图像路径(应该正常工作),程序崩溃时出现以下提示:

    问题签名:   问题事件名称:APPCRASH   应用程序名称:OpenCVTest.exe   应用版本:0.0.0.0   应用程序时间戳:5230da00   故障模块名称:libstdc ++ - 6.dll   故障模块版本:0.0.0.0   故障模块时间戳:522c646d   例外代码:c0000005   异常偏移:0001df4b   操作系统版本:6.1.7600.2.0.0.256.48   区域设置ID:1033   附加信息1:4c0d   附加信息2:4c0d4d78887f76d971d5d00f1f20a433   附加信息3:4c0d   附加信息4:4c0d4d78887f76d971d5d00f1f20a433

1 个答案:

答案 0 :(得分:1)

原来这不是由于libstdc ++ - 6.dll。相关主题的答案:OpenVC 2.4.5, eclipse CDT Juno, MinGW error 0xc0000005实际上解决了我的问题。我没有成功,因为我留下了预先构建的(随opencv下载)opencv库(* .dll)以及在系统路径下暴露的重建(根据上述解决方案)库。结果,我的程序使用了预构建版本并忽略了新版本。在我用重新构建的* .dll替换预先构建的* .dll后,程序运行没有任何问题。