【问题标题】:My Release .exe Cant Run on Other PCs我的 Release .exe 无法在其他 PC 上运行
【发布时间】:2012-08-08 19:44:27
【问题描述】:

我有一个用 Visual Studio 2008 C++ 编写的小程序,它基本上可以创建和修改简单的文本文件。我不会在这里复制代码,但如果有人想看看:www.joggingbenefits.net/hcode.txt

我的问题是 - 我想用这段代码制作一个 .exe,它可以在其他不一定安装 Visual Studio 或 redist 包的 Windows PC 上运行。

到目前为止我已经尝试过:

  • 将项目配置从“debug”更改为“release”
  • 在所有 4 个提供的运行时库之间切换(在代码生成下)
  • 将每个生成的 .exe 保存在我的“发布目录”中
  • 尝试在没有安装 Visual Studio 的 PC 上运行每一个,但它们都不起作用……它只运行了大约半秒,然后就消失了。

我不确定我做错了什么,我一定错过了一些非常重要的东西...回顾一下:我确实将编译模式更改为发布,并且我确实尝试更改运行时库,静态/动态库,但没有一个生成的 exe 可以运行...

PS - 这些程序都以管理员身份运行,并且禁用了防病毒等,所以不是这样。 另外,我没有链接到任何 DLL,所有包含的库都是标准的。

有什么想法吗?

【问题讨论】:

  • 您是否尝试过使用 DependencyWalker 打开文件?然后您可以查看它需要哪些 DLL,然后检查是否在另一台 PC 上安装了所需的 VS2008 运行时
  • 也添加一些错误消息(即为什么它们不会运行)

标签: c++


【解决方案1】:

在非工作系统上使用 DependencyWalker 打开 .exe。它将显示缺少哪些 DLL(通常是一些 VS2008 运行时)。

此外,在 Windows 事件管理器中的错误下,当您尝试运行应用程序时,您还应该获得错误描述,说明它错过了什么。 当您知道您丢失了哪个文件时,您可以通过 google 搜索它,然后检查它的 Redistributable 内容。

【讨论】:

  • 谢谢,我会的。然而,我的目标不是在我的目标 PC 上安装任何东西。一切都应该包含在我的 .exe 中,所以我发送这个程序的人不需要安装任何东西来成功运行它。
【解决方案2】:

您已经创建了一个命令行程序。当 Windows 打开这个程序时,它会为输入和输出创建一个命令窗口,当程序完成时它会立即关闭窗口。

如果您打开自己的命令窗口并从那里运行它,程序完成时窗口不会关闭。

如果您仍然希望程序直接运行但查看输出,可以在程序末尾添加暂停。

cout << "Please type any key to finish" << endl;
char ch;
cin >> ch;

【讨论】:

  • 这似乎是给定问题的解释。
  • 我查看了代码,它不会立即终止,如果文件不存在,它可能会抛出错误,但在这种情况下,您会得到“应用程序已停止工作" 错误,因此我认为这不是由应用程序终止引起的。
  • 我明白,但是,程序应该进入一个循环,等待用户从菜单中选择一些东西 - 那么为什么它只是跳过该部分并直接进入最后呢?
  • @LikBezPujanki,我只能猜测它在display 中失败并提前致电exit
【解决方案3】:

尝试访问代码生成属性页并确保运行时库读取 /MT 或 /MTd 而没有其他内容(尤其是 /clr)。对项目进行干净的构建并确保输出状态 /MTd 和 IDE 没有注入任何其他冲突标志。我对 VS2010 没有太多经验,但这就是我在 2008 年需要做的所有事情。

【讨论】:

  • 我已经做到了,如上所述,但它没有帮助,.exe 只是运行并在之后立即关闭
【解决方案4】:

除了其他人提到的 DependencyWalker 提示(值得先做),我还建议在目标 PC 上临时安装 Debugging Tools for Windows(这只是一个小安装)。运行 windbg 并选择 File -&gt; Open Executable 然后按 F5 运行。当应用程序崩溃时,您会从错误消息和调用堆栈方面得到更有意义的解释,说明它哪里出错了。我的猜测是缺少 dll,或者与您自己系统上的不同版本的 dll 冲突。

您可以使用 DependencyWalker 做的另一件有用的事情是在目标 PC 上运行它并选择 Profile 选项,它会在搜索 dll 时为您提供大量信息。

请注意,这两种方法都需要您在目标 PC 上安装一些东西,但这只是暂时的,如果不这样做,您只会猜测它为什么会出错。

【讨论】:

  • 好的,我会这样做并报告。
【解决方案5】:

尝试在可执行文件不工作的机器上安装“Microsoft Visual C++ 2010 Redistributable Package”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2013-05-18
    • 2014-03-02
    • 2014-11-07
    相关资源
    最近更新 更多