做项目的过程中,遇到这样的问题:在自己的电脑上用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,只是每个可执行文件都要一份,太麻烦)

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

如何在其他电脑上运行VS2005编译的DEBUG版应用程序的更多相关文章

  1. 关于C++编译的程序无法在新一台电脑上运行总结

    最近在调用一个SDK调试一个主板的DPIO. 可是编译好的程序在开发电脑上运行没问题,到了新主板建立的电脑系统上就出问题. 总结了下要注意一下几方面. 1:程序本身要没有问题.至少在开发电脑系统环境下 ...

  2. 让opencv程序在没有安装opencv的电脑上运行

    经常需要把用opencv写的程序拿到没有装opencv的电脑上去运行和演示,要让opencv程序脱离opencv环境,一般有两种方法: 一种是动态链接opencv,即把相应的dll拷贝到exe所在目录 ...

  3. 在一台电脑上运行两个或多个tomcat

    在一台电脑上运行多个tomcat 在本例中,使用两个tomcat做示例   工具/原料   tomcat 安装好jdk,并且配置好环境变量 方法/步骤     首先去apache下载一个tomcat, ...

  4. win10应用开发——如何判断应用是在手机上运行还是电脑上运行

    原文:win10应用开发--如何判断应用是在手机上运行还是电脑上运行 在进行uwp应用开发的时候, 有时我们需要知道自己的应用是在手机端运行还是在桌面端运行,那么通过以下的api就可以进行判断: Wi ...

  5. VS2008生成的程序无法在其它电脑上运行,提示系统无法执行指定的程序

    经过一番查找,最给力的参考是 http://www.cnblogs.com/visoeclipse/archive/2010/02/27/1674866.html ------------------ ...

  6. 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载

    原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...

  7. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  8. 如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件

    项目基本算法已经完成,甲方需要一个可以运行的demo.目前,程序能在自己的电脑上正常运行.移植到其他win7系统上,运行失败. 寻找各种解决办法,baidu找到两个办法: 1.使用静态链接的方法,这种 ...

  9. vs2012编译在win7 32位电脑和win xp电脑上运行的win32程序遇到的问题记录

    一.win7 32位电脑: vs2012编译的64位程序是没有问题的.但编译的32位程序在别的电脑(虚拟机模拟)出错: 感觉很无语,vs这么牛逼的东西,在设计时候都不考虑这些吗? 在自己电脑C:\Wi ...

随机推荐

  1. dubbo 转

      http://blog.csdn.net/zhiguozhu/article/details/50517513 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式 ...

  2. mac osx 快捷键符号以及意义 触发角:锁屏

    快捷键中常用符号⌘(command).⌥(option).⇧(shift).⇪(caps lock).⌃(control).↩(return).⌅(enter). OSX快捷键 快捷键中常用符号 ⌘( ...

  3. 8、java继承中的this和super的应用

    java中只支持单继承,这是为了防止继承的父类中出现同样的函数不知道调用哪个好.虽然java只支持单继承但是有多实现来补偿. 子父类出现后,类成员的特点: 类中成员:1,变量.2,函数.3,构造函数. ...

  4. ASP.net 关于TextBox的TextMode=“PassWord”时的动态赋值

    1.在界面创建一个新的TBPwdTemp并设置TextMode=“SingleLine”,visible=“false”,将数据库密码值传给该TextBox: 2.然后分别用 this.TBPwd.A ...

  5. 数据库&数据仓库

    数据仓库的定义: 世界公认的数据仓库概念创始人W.H.Inmon在<数据仓库>(Building the Data Warehouse)一书中对数据仓库的定义是:数据仓库就是面向主题的.集 ...

  6. 《Linux内核分析》课程总结

    朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 不知不觉,在网易 ...

  7. MFC中的各种DC区别

    转载自:xntop的<区别MFC中的CClientDC.CWindowDC.CPaintDC.CMetaFileDC> CClientDC及其子类 1. CClientDC类只能在客户区绘 ...

  8. 4. read命令

    4.1 作用 从标准输入中读取一行. 4.2 参数 -p 允许在read命令行中直接指定一个提示. -t 给用户的输入作限时规定. -n 规定read后变量所接收的字符的个数. -s 使得read命令 ...

  9. 抽象类和抽象方法(关键字abstract)

     1.抽象类不能被实例化,可以没有,一个或多个抽象方法  2.抽象方法只有方法的声明但没有方法的实现,有抽象方法的类必须声明为抽象类,子类必须重写父类所有的抽象方法才能被实例化,否则子类也是个抽象类, ...

  10. C#EXCEL 操作类--C#ExcelHelper操作类

    主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...