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

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

我是 opencv、C++ 和 eclipse CDT 初学者。我正在按照教程学习 opencv。然而,虽然我的程序编译成功了,但它在执行后很快就崩溃了。我通读了许多相关的问答,但没有找到有效的解决方案。非常感谢任何建议。以下是一些规范供您引用:

系统设置

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

详细流程

  • 下载并解压 Eclipse
  • 已将 MinGW 安装到 C:\MinGW。将“C:\MinGW\bin”设置为系统路径[PATH]
  • 将 OpenCV 下载并执行到 C:\opencv。将“C:\opencv\build\x86\mingw\bin”设置为系统路径[PATH]
  • 启动 Eclipse 并在 Eclipse 中:
    • File>New>C++ Project:项目名称->OpenCVTest,项目类型->Hello World C++ Project,Toolchains->MinGW GCC
    • 完成
    • Project>Properties>C/C++ Build>Settings>Tool Settings>GCC C++ Compiler>Includes>Include paths (-I) 我添加了“C:\opencv\build\include”。
    • Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries (-l) 中,我依次添加了 opencv_core246、opencv_highgui246 和 opencv_imgproc246。
    • Project>Properties>C/C++ Build>Settings>Tool Settings>MinGW C++ Linker>Libraries>Libraries search path (-L) 我添加了“C:\opencv\build\x86\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;
    }
    
  • 构建项目并获得以下控制台输出(假设成功):

    信息:Internal Builder 用于构建 g++ "-IC:\opencv\build\include"-O0 -g3 -Wall -c -fmessage-length=0 -o "src\OpenCVTest.o""..\src\OpenCVTest.cpp" g++ "-LC:\opencv\build\x86\mingw\lib"-o OpenCVTest.exe "src\OpenCVTest.o"-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

最佳答案

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

关于c++ - 与 libstdc++-6.dll 相关的 OpenCV 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18751719/

相关文章:

c++ - 使用 CodeBlocks 调试共享 C++ 库

具有默认参数的 C++ 模板类,可能还有元编程

C++ 继承 - 无法在 cpp 文件中定义方法

iphone - 原生Android应用程序和phonegap应用程序之间的区别

c++ - Visual Studio Code 在终端中运行程序以进行输入

matlab - 从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易?

c++ - 创建本地 opencv mat 对象时内存泄漏

c - 通过 OpenCV 跟踪打印眼睛坐标

android - 如何在 Windows 7 中构建 android 独立工具链

windows-7 - 如何在 Windows 7 中增加剪贴板的大小?