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

Posted

技术标签:

【中文标题】由于在 Code::Block 中缺少“libgcc_s_dw2-1.dll”,OpenCV 程序无法运行【英文标题】:OpenCV program cannot run because of missing "libgcc_s_dw2-1.dll" in Code::Block 【发布时间】:2012-10-03 01:55:03 【问题描述】:

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

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

我尝试在 *** 上搜索相关问题,但他们的所有解决方案都无法解决此问题。谢谢。

【问题讨论】:

[更新] 如果代码中没有OpenCV代码,Code::Block可以正常运行。我做了一个测试,在空白 main() 函数中添加“cv::Mat impic = imread("kindle-fire-hd.jpg");。它显示了同样的问题。所以,我猜这是由与 OpenCV 库的链接? [更新] 这个问题我已经解决了。 【参考方案1】:

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

导致此“缺少 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下载

【讨论】:

我一直在试图弄清楚如何为此添加系统路径,但我无法弄清楚。我认为如果您包含一个路径名和目录应该是什么的示例,它会增加这个答案。我尝试了一个随机名称和我放入 dll 的文件的路径,但它没有工作。这只是我的电脑有问题还是我添加的路径有误?谢谢!【参考方案2】:

出于某种原因 Code::blocks 没有附带该 DLL,尽管它可以通过 google 的站点下载。您可能需要另一个 DLL,即 libstdc++6.dll

人们会通知您在链接选项中链接 -static-libgcc、-static- 或 -static-libg++,至少使用我的版本(大概是您的版本)它不会解决问题,除非我做错了,这是合理的。

【讨论】:

是的,-static-libgcc、-static- 或 -static-libg++ 无法正常运行,因为我之前尝试过它们。 我刚刚从 google 的站点下载了它们,并将它们放在目录中,瞧。我确信可能有一种方法可以删除链接,但这并不是人们声称的那样。 说明如何处理 dll 会改善这个答案。即使在今天它仍然很重要! (2 年后)

以上是关于由于在 Code::Block 中缺少“libgcc_s_dw2-1.dll”,OpenCV 程序无法运行的主要内容,如果未能解决你的问题,请参考以下文章

Code::Block

Dev-Cpp/Code::Block/MinGW下使用EasyX

Code block of anonymous object in Java

php加密解密方法

php加密解密方法

C++主流开发工具