1

我编写了一个简单的 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 上搜索相关的问题,但他们的所有解决方案都无法解决这个问题。谢谢。

4

2 回答 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,可能会喜欢这个问题我在哪里可以获得 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-dl​​l-6.tar.lzma/下载

于 2012-10-03T02:55:43.250 回答
1

不管出于什么原因 Code::blocks 没有随该 DLL 一起提供,尽管它可以通过 google 的站点下载。您可能需要另一个 DLL,即 libstdc++6.dll

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

于 2012-10-03T02:00:41.347 回答