如何在其他电脑上运行VS2005编译的DEBUG版应用程序

做项目的过程中,遇到这样的问题:在自己的电脑上用VS2005编译好的DEBUG版程序在其它的没有安装VS2005的电脑上没有办法运行,郁闷至极啊。 
直 接拷贝文件后,错误信息如下:"This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.",大意就是程序由于配置错误导致启动失败,重新安装来解决这个问题。

原来用VC6或者VS2003没有出现过这样的错误信息啊,只是由于没有安装相应的IDE,可能出现找不到某些DLL的错误,按照错误提示把DLL考过来也就可以了,这个错误让人完全抓不到头脑。 
尝试将程序编译成Use MFC in a static library还是出现同样的问题,很显然不是由于缺少什么DLL导致的。于是只能求救于搜索引擎,几番查找下来终于解决了问题。

首先,通过菜单找到关于选项查询当前VS2005的版本,然后到自己电脑"$(Windows)/WinSxS/"目录下可以看到很多长长 名字的目录。第一个"_"前为平台,这里以x86为例,接下来找到带有"Microsoft.VC80.DebugCRT" 和"Microsoft.VC80.DebugMFC"字样的且包含上面版本号的目录。我的电脑目录如下: 
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4 
将这两个目录拷贝到目标电脑的"$(Windows)/WinSxS/"位置,进入"$(Windows)/WinSxS/Manifests/"目录,用上面的方法找到四个文件并拷贝到目标电脑的相同目录中,我的电脑文件如下: 
x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat以及.manifest文件
x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_257740a4.cat以及.manifest文件

最后一步,进入"$(Windows)/WinSxS/Policies/"目录,找到带有"Microsoft.VC80.DebugCRT"和"Microsoft.VC80.DebugMFC"字样的两个目录将其拷贝到目标电脑的相同目录,我的电脑目录如下: 
x86_policy.8.0.Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4 
x86_policy.8.0.Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_x-ww_a193936f 
到 此,所有需要的文件都拷贝结束了,运行刚刚的应用程序,显示了我们熟悉的错误信息:"This application has failed to start because XXX.dll was not found. Re-installing the application may fix this problem."

按照提示,将需要的DLL拷贝到"$(Windows)/System32/"目录下,我的这次实验中需要拷贝 "msvcp71d.dll"和"msvcr71d.dll"(如果你的程序不需要,就不用复制了)。这样就可以顺利的运行DEBUG的程序了。

顺便提一下,在VS2005中,默认的会给每一个应用程序编译生成一个"应用名.exe.manifest"文件,打开来看,可以发现跟我们上面拷贝的文件以及目录名称有些相近的地方,如:

我们要拷贝的 文件命就是这样的组合:processorArchitecture_name_publicKeyToken_version_...,所以如果在拷贝 上诉文件以及目录之后仍旧无法运行的,可以看看manifest文件里面是不是还依赖了其它目录,如法炮制应该就可以了。

另外,在寻找解决办法的过程中看到有人提到release版的问题,解决方法则方便的多:

第一种:拷贝"$(Microsoft Visual Studio 8)/SDK/v2.0/BootStrapper/Packages/vcredist_x86/vcredist_x86.exe"(微软有这个补丁提供,但是我试过后,不重启的话不行,不知道重启以后行不行)到目标电脑执行即可。如果你的程序无法运行,可以试一下。

注:2008年2月20日遇到一台电脑无法运行Release版程序,如上所说运行"vcredist_x86.exe",确实可以。

第二种: 拷贝“$(Microsoft Visual Studio 8)/VC/redist/x86/Microsoft.VC80.CRT”文件夹到目标电脑可执行文件的文件夹下即可。(我试过,OK,只是每个可执行文件都要一份,太麻烦)

当然,这都不是正统方法,正统的方法是做安装包,到目标机器上安装才是正道。

上一篇:SSH--完全分布式主机设置【克隆过安装过Hadoop的主机后】


下一篇:hdu2036