我编写了一个简单的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上搜索相关的问题,但他们所有的解决方案都无法解决这个问题。感谢。
答案 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 ++,至少我的版本(并且可能是你的)它不会解决问题,除非我做错了,这似乎是合理的。