由于Code :: Block中缺少“libgcc_s_dw2-1.dll”,OpenCV程序无法运行

时间:2012-10-03 01:55:03

标签: opencv mingw codeblocks

我编写了一个简单的OpenCV程序,试图在同一目录中打开图像“kindle-fire-hd.jpg”。 IDE是Code :: Block,OpenCV版本是2.4.2,编译器是MinGW,它作为Code :: Block的组件附加。代码如下所示:

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
  Mat im = imread(argc == 2 ? argv[1] : "kindle-fire-hd.jpg", 1);
  if (im.empty())
  {
    cout << "Cannot open image!" << endl;
    return -1;
  }

  imshow("image", im);
  waitKey(0);

  return 0;
}

它可以正确构建和编译(没有任何错误和警告消息),我已经按照Getting started with OpenCV 2.4 and MinGW on Windows 7中的说法配置了Code :: Block。

但是,当我“运行”这个程序时。它显示“缺少libgcc_s_dw2-1.dll”消息。

"missing libgcc_s_dw2-1.dll" message window

然后,当我单击“确定”按钮时,控制台窗口显示以下消息:

console, error code window

我试图在stackoverflow上搜索相关的问题,但他们所有的解决方案都无法解决这个问题。感谢。

2 个答案:

答案 0 :(得分:4)

最后,我解决了这个问题!

导致这个“丢失的dll”问题的原因是附带Code :: Block的MinGW编译器不完整。因此,您需要将所需的DLL文件下载到目录“C:\ Program Files(x86)\ CodeBlocks \ MinGW \ libexec \ gcc \ mingw32 \ 4.4.1”,您还需要将此目录的路径添加到系统PATH环境变量。

在这种情况下,我下载了两个DLL文件:libgcc_s_dw2-1.dll和libstdc ++ - 6.dll,即使只有一个关于libgcc_s_dw2-1.dll的丢失错误消息。如果您忘记了第二个,libstdc ++ - 6.dll,那么在运行程序时,您将收到另一条缺失的消息。

第一个dll,libgcc_s_dw2-1.dll,可以在问题Where Can I Get libgcc_s_dw2-1.dll?上喜欢,其中下载链接在作者rodrigo的选定答案中列出。谢谢你!

第二个dll,libstdc ++ - 6.dll,可以在http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.6.2-1/libstdc%2B%2B-4.6.2-1-mingw32-dll-6.tar.lzma/download下载

答案 1 :(得分:1)

为什么原因Code :: blocks不附带该DLL,尽管它可以通过google'd网站下载。您可能需要另一个DLL,它将是libstdc ++ 6.dll

人们会告诉你在链接选项中链接-static-libgcc,-static-或-static-libg ++,至少我的版本(并且可能是你的)它不会解决问题,除非我做错了,这似乎是合理的。