如何在其他电脑上运行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,只是每个可执行文件都要一份,太麻烦)
当然,这都不是正统方法,正统的方法是做安装包,到目标机器上安装才是正道。
如何在其他电脑上运行VS2005编译的DEBUG版应用程序的更多相关文章
- 关于C++编译的程序无法在新一台电脑上运行总结
最近在调用一个SDK调试一个主板的DPIO. 可是编译好的程序在开发电脑上运行没问题,到了新主板建立的电脑系统上就出问题. 总结了下要注意一下几方面. 1:程序本身要没有问题.至少在开发电脑系统环境下 ...
- 让opencv程序在没有安装opencv的电脑上运行
经常需要把用opencv写的程序拿到没有装opencv的电脑上去运行和演示,要让opencv程序脱离opencv环境,一般有两种方法: 一种是动态链接opencv,即把相应的dll拷贝到exe所在目录 ...
- 在一台电脑上运行两个或多个tomcat
在一台电脑上运行多个tomcat 在本例中,使用两个tomcat做示例 工具/原料 tomcat 安装好jdk,并且配置好环境变量 方法/步骤 首先去apache下载一个tomcat, ...
- win10应用开发——如何判断应用是在手机上运行还是电脑上运行
原文:win10应用开发--如何判断应用是在手机上运行还是电脑上运行 在进行uwp应用开发的时候, 有时我们需要知道自己的应用是在手机端运行还是在桌面端运行,那么通过以下的api就可以进行判断: Wi ...
- VS2008生成的程序无法在其它电脑上运行,提示系统无法执行指定的程序
经过一番查找,最给力的参考是 http://www.cnblogs.com/visoeclipse/archive/2010/02/27/1674866.html ------------------ ...
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行--转载
原文地址:http://funine.iteye.com/blog/2220359 (本文所有素材将在文章最后附上) 准备工具exe4j, converticon.com(用于制做.ico格式的图片) ...
- 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板
Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...
- 如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件
项目基本算法已经完成,甲方需要一个可以运行的demo.目前,程序能在自己的电脑上正常运行.移植到其他win7系统上,运行失败. 寻找各种解决办法,baidu找到两个办法: 1.使用静态链接的方法,这种 ...
- vs2012编译在win7 32位电脑和win xp电脑上运行的win32程序遇到的问题记录
一.win7 32位电脑: vs2012编译的64位程序是没有问题的.但编译的32位程序在别的电脑(虚拟机模拟)出错: 感觉很无语,vs这么牛逼的东西,在设计时候都不考虑这些吗? 在自己电脑C:\Wi ...
随机推荐
- mysql事务,START TRANSACTION, COMMIT和ROLLBACK,SET AUTOCOMMIT语法
http://yulei568.blog.163.com/blog/static/135886720071012444422/ MyISAM不支持 START TRANSACTION | BEGIN ...
- 家有学霸的CEO
小余老师说 http://learning.sohu.com/20161101/n471998591.shtml
- 031. aps.net中数据绑定控件两种添加自动编号的方法
前端HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defaul ...
- Centos6.5下安装protobuf及简单使用
1.protobuf是google公司提出的数据存储格式,详细介绍可以参考:https://code.google.com/p/protobuf/ 2.下载最新的protobuf,下载地址:https ...
- Null modem接线
1.6 <-> 4 2 <-> 3 3 <-> 2 4 <-> 1.6 5 <-> 5 7 <-> 8 8 <-> ...
- Perl 随笔
1. .pl 文件带入参数: ./auto_cfg.pl ./mconfig.config ./boardconfig.config ./menuconfig.config .ver ./a ...
- angular.js input
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="UTF-8& ...
- python分布式任务调度Celery
Celery是Python开发的分布式任务调度模块,今天抽空看了一下,果然接口简单,开发容易,5分钟就写出了一个异步发送邮件的服务. Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前 ...
- Laravel 校验规则之字段值唯一性校验
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] laravel validator unique 'name' => 'required|unique:test,disp ...
- Mono addin 学习笔记 5 TypeExtensionPoint
1. Attribute声明方式 定义扩展点: [TypeExtensionPoint]public interface ICommand{ void Run();} 定义扩展: [Ex ...