我的发布.exe无法在其他PC上运行

时间:2012-08-08 19:44:28

标签: c++

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

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

到目前为止我尝试过:

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

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

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

有什么想法吗?

5 个答案:

答案 0 :(得分:0)

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

此外,在Windows事件管理器中出现错误时,您还应该在尝试运行应用程序时获取错误说明,以及错过的内容。 当您知道丢失了哪个文件时,您可以直接进行谷歌搜索,并检查它的Redistributable。

答案 1 :(得分:0)

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

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

如果你仍然希望它直接运行但是看到输出,你可以在程序的末尾添加一个暂停。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

除了其他人提到的DependencyWalker提示(值得先做)之外,我还建议在目标PC上临时安装Debugging Tools for Windows(这只是一个小小的安装)。运行windbg并选择File -> Open Executable,然后使用F5运行。当应用程序爆炸时,您将获得有关错误消息和调用堆栈方面出错的更有意义的解释。我的猜测是一个丢失的dll,或者与你自己系统上的dll版本不同的冲突。

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

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

答案 4 :(得分:-1)

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