1

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

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

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

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

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

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

任何想法?

4

5 回答 5

0

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

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

于 2012-08-08T19:49:08.807 回答
0

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

于 2012-08-08T20:12:43.590 回答
0

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

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

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

cout << "Please type any key to finish" << endl;
char ch;
cin >> ch;
于 2012-08-08T19:51:13.393 回答
0

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

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

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

于 2012-08-08T20:31:01.673 回答
-1

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

于 2013-05-16T10:39:34.783 回答