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

问题描述 投票:1回答:2

我写了一个简单的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”消息。

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

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

opencv mingw codeblocks
2个回答
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可以在问题qazxsw poi中找到,其中下载链接在作者rodrigo的选定答案中列出。谢谢你!

第二个DLL,libstdc ++ - 6.dll,可以在Where Can I Get libgcc_s_dw2-1.dll?下载


1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.