我有一个用Visual Studio 2008 C ++编写的小程序,它基本上创建和修改简单的文本文件。我不会在这里复制代码,但如果有人想看看:www.joggingbenefits.net/hcode.txt
我的问题是 - 我想从这段代码制作一个.exe,可以在其他没有安装Visual Studio或redist软件包的Windows PC上运行。
到目前为止我尝试过:
我不确定我做错了什么,我必须在这里遗漏一些非常重要的东西...回顾一下:我确实将编译模式更改为Release,我确实尝试更改运行时库,静态/动态库,但没有一个产生的exes可以运行...
PS - 这些程序都以管理员身份运行,并且禁用了防病毒软件等,所以不是这样。 另外,我没有链接到任何DLL,所有包含的库都是标准的。
有什么想法吗?
答案 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”。