程序无法启动,因为缺少*.dll文件 - MinGW,Eclipse,Windows 7。

7

我非常清楚这个板块上已经出现了许多类似的问题,但是其中没有任何一个解决方案能帮助到我。

我正在尝试在Windows 7 Service Pack 1上使用MinGW工具链来运行Eclipse CDT。我已经在Windows XP上完成了这个过程,并认为同样的步骤可以使它在Windows 7上顺利运行,但事实证明我错了 ;)

安装了自动安装程序提供的MinGW(我安装了一些不需要的东西),并将C:/MinGW/bin添加到我的PATH环境变量中后,我尝试编译一个简单的Hello, World!程序。Eclipse没有给我任何错误提示,但是控制台窗口中也没有任何输出。警惕起来时,我尝试在Eclipse之外运行可执行文件,结果出现了“Program can't start because libstdc++-6.dll is missing”的错误。

奇怪的是,这个dll文件在C:/mingw/bin目录中,因此PATH变量应该可以找到它,但却没有找到。把dll文件复制到可执行文件所在的目录中虽然有用,但显然只是一种短期的解决方案,我更希望能有一种更“正常”的解决方案。

我认为我的问题与我在这个板块中注意到的其他问题不同的因素是:首先,Eclipse在我的PATH变量中找不到任何错误(如果MinGW未包含在Path变量中或其他原因,则通常会发现这种错误),其次,所需的dll文件位于它们应该在的位置,但似乎我的Windows系统无法找到它们。


我假设你已经检查过它是一个“真实”的文件而不是符号链接了吗? - Ben Voigt
它们是真正的*.dll文件 - 正如我所说,将它们复制到可执行文件所在的文件夹中就可以解决问题,但我正在寻找一种更“优雅”的解决方案,并且不依赖于运行程序的机器。 - user988066
1
只是出于好奇,你是否已经注销并重新登录了。我们之前遇到过这个问题,注销/重新登录有帮助。 - codencandy
我尝试了几次重新启动... - user988066
要查看程序所需的 DLL,您可以使用此 http://www.dependencywalker.com/。 - simon
1个回答

5
“真正”的解决方案是将DLL文件复制到本地。在发布您的EXE文件时,必须一并发布该DLL文件。”

嗯,那似乎过于复杂了。此外,我曾经在Windows 7上看到过Eclipse的实现,没有任何类似的花招,运行得非常顺畅 - 因此,我的问题可能出在哪里呢? - user988066
3
你可以在gcc中使用-static参数。 - Joshua
1
这在通俗的说法中意味着什么?我在Eclipse中该去哪里做这个? - user988066
1
这意味着静态链接程序,将 DLL 放置在 EXE 内部。 - Joshua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接