【问题标题】:CPP file runs, but doesn't work when compiled to exeCPP 文件运行,但编译为 exe 时不起作用
【发布时间】:2013-09-09 01:23:42
【问题描述】:

我使用 Microsoft Visual Studio 2010 和 Allegro 创建了一个 cpp 文件。它在 Visual Studio 界面中运行得非常好,但是当我将它编译成 exe 时,它​​说:

“程序无法启动,因为您的计算机中缺少 allegro-5.0.10-monolith-md-debug.dll。请尝试重新安装程序以解决此问题。”

我在用来编写代码和调试它的同一台计算机上运行 exe,所以它不应该是缺少 dll 的错。应该是?这对我来说没有意义....我以前编译过其他 exe,它们确实在其他计算机上运行,​​Allegro 一个在它是 cpp 文件时工作得很好,但是当 Allegro 文件作为 exe 运行时,它说我没有独石的东西。

为什么文件作为 exe 失败,而不是 cpp?

【问题讨论】:

  • 这可能意味着 Visual Studio 在某处提供了包含 allegro-5.0.10-monolith-md-debug.dll 的路径,因此在 IDE 中运行它可以成功加载它。简单的解决方案是在您的机器上找到丢失的 dll 并将其复制到与您的 exe 相同的位置。
  • 当您在 IDE 中运行程序时,默认工作目录或加载 DLL 文件的位置与项目所在的位置相同。如果您导航到调试或发布目录并双击它,那么工作目录就是调试或发布目录,很可能不是它需要的 dll 所在的位置。
  • 正如其他人所指出的,这是必需的 .dll 文件必须位于 DLL 的搜索路径上的问题。有关 DLL 搜索路径的详细信息,请参阅DLL search on windows
  • 为了澄清问题,cpp作为编译单元无论如何都不会运行,可执行文件可以运行,这是Windows上的PE / COFF格式。
  • 当你构建一个独立的可执行文件时,你可能想要切换到发布模式,所以它不会尝试使用调试 DLL。不确定它是否会有所帮助,但它可能会(如果调试 DLL 位于仅 VS 知道的路径上,但发布 DLL 位于例如 PATH 上)。

标签: c++ exe allegro


【解决方案1】:

这对我有用:

在配置属性中时 -> 调试 - 将PATH=c:\allegro\bin;%PATH% 添加到环境变量中。

我遇到了完全相同的错误,程序告诉我它找不到整体 DLL 文件。我注意到的是 PATH=c:\allegro\bin;%PATH% 而不是 PATH=c:\allegro\bin:%PATH%。区别并不容易发现。

我在 bin 和 %PATH% 之间放置了 : 而不是 ;

这是一个简单的错误,但它让我花了大约 3 个小时来解决心痛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 2022-01-21
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    相关资源
    最近更新 更多