“由于应用程序配置不正确,程序未能启动”--原因及解决方法
问题描述:
当运行由VC 2005 编译的程序时,出现错误消息“由于应用程序配置不正确,程序未能启动.重新安装应用程序可能会纠正这个错误”
解决方法:
在目标机器安装VCRedist_x86.exe可以解决这个问题。该文件可以在MSDN网站上下载。
地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en
如果是64位机器,请用x64版本和ia64版本
原因:
一般认为,VC2005编译出来的东西,如果用了atl或者mfc,需要atl80.dll 或者msmfc80.dll,我在一开始的时候也是这么认为的,我把这两个文件放在了path中可以找到的地方。因此用depends看出来是没问题的。
但是事实上,从VC2005开始,(可能2003,但是我没有用过)这些dll是不像以前的程序那样直接被加载进进程的。查看%SYSTEMROOT%/ winsxs会发现里面有很多类似于x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.42_x- ww_6e805841的目录,这些目录里面包含了atl80.dll, msmfc80.dll。然后在manifests 目录里面有对应的manifests:x86_Microsoft.VC80.ATL_1fc8b3b9a1e18e3b_8.0.50727.42_x -ww_6e805841.manifest
这是VC8的一个改变。VC8编译的程序在运行时加载动态库(crt, mfc, atl )都是放在一个类似全局类型库的地方。不再像以前MS所建议的那样,为了避免dll hell而把动态库放在程序同级目录。而这个全局类型库的地方就是winSxS,同时加载之前还需要有该dll对应的manifest。
具体加载dll的时候为什么需要Manifest我不是很清楚,Visual C++ 2005的 program manager Martyn Lovell在他的blog中有提到要解释这样做的原因,但是至今没有下文:(
暂时能够知道的是,加载dll需要manifest,没有manifest的动态库即使放在path下也不会加载。而VCRedist_x86.exe会帮你把manifest和dll放在正确的地方。
参考:
Redistribution of VC++ files(VC80)
http://msdn2.microsoft.com/en-us/library/ms235299(VS.80).aspx
VC8 使用WinSxS的原因:
Martyn Lovell‘s blog
VC++2005 console 程序错误:由于应用程序的配置不正确,应用程序未能启动,重新安装
作者:佚名 出处:中国自学编程网收集整理 发布日期:2008-09-10
今天在用VC++2005写一个控制台程序的时候,提示一下错误
"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
下面是截图
在网上查了查,说是有可能没装Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)的问题,这个好办,直接从MS网站上下了一个,重起,还不行。
试了一下release版,可以使用,细想,debug下有许多调试信息,是不是跟这些些库有关系
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
要使应用程序链接这些库,可以
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
run,一切OK,
第一回用2005的console程序,看来和VC6.0还是有一定区别。
==================================
VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装...”
2008-04-02 10:52
转贴(可行)
VC.net2005写的程序如何在没有.Net FrameWork的机器上运行 --解决"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
最近在公司的主要工作是做一个桌面程序,提供给公司正在为移动做的项目使用.我开始时是用C#写的程序,后来,公司要求,不安装.net framwork 2.0, 要求我改成C++的.所以后来改成VC2005和程序.原来以为可以不用安装,附带几个DLL库就可以运行程序了,哪知道,开始时,在别的电脑上都不能运行,一运行就报错,在XP如的错误如下图:
在2000上也会报错,不过,他会提示:因为少了XXX DLL,程序无法启动,于是我找到所以提示缺少的DLL放到程序目录下,2000下就可以运行了.可是在XP上还是不行,还是会报上面那个错误,我猜肯定是少了哪个DLL,可是找不出来,同事们也用了好多方法帮我找程序用到的DLL,也用到了不少的好工具,也找出了好多DLL,这些DLL加到一起,有10 几M那么多(如下图).可是XP下还是不行.看来找DLL是没办法了.到网上找找办法吧.
到百度里输入"由于应用程序的配置不正确",搜索一下,嘿嘿,还真不少,都是和我一样,VC2005写的程序,在2000下可以用,在XP, 2003下不行,不过发现,都是有人问,没人回答,可怜的人啊,咋就和我一样不幸呢.继续找啊找啊,找到了,找到一个人,提供了三个方法,摘下来,如下:
最近在VS2005下用C++写了一个Console程序,在一台未安装VS2005上运行,显示:
"系统无法执行指定的程序"
原来用VC6和VS2003的话,是会提示缺少"**.dll",但是用VS2005却没有这样的提示。
用命令行方式运行,提示:
"系统无法执行指定的程序"
直接双击运行,提示:
"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
自己实验了一下,感觉以下两种解决办法是比较方便的:
方法一:
在C:/Program Files/Microsoft Visual Studio 8/VC/redi
st/Debug_NonRedist/x86/Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。
其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!
方法二:
修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
方法三:
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
这样生成的exe文件应该就可以在其他机器上跑了。
方法四:
你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装
我逐一测试下来,直到第三个方法才成功.第二个方法不知道在哪里修改编译选项所以放弃了,第四个方法不喜欢,这跟直接安装.net framework 2.0 有什么区别吗?还不如直接安装.net framework 2.0 呢.
使用第三种方法,编译后,程序的文件会变大好多,因为其已经将使用到的DLL库静态编译到了程序里了.我这个程序原来的大小是288K,如图:
而采用第三种方法生成的程序却有2.85M那么大,如下图所示:
不过比起那么多的DLL来,这点大小不算什么.不过,在运行时,相信占用的内存应该会多一点.
如果你正在使用VC2005,也出现这样问题的话,就试试上面的方法吧.
“由于应用程序配置不正确,程序未能启动”--原因及解决方法相关推荐
- 由于应用程序配置不正确,未能启动该应用程序。请查看清单文件以查找可能的错误
以前.net 2.0写的一个winform程序,选择转到vs2008,net 3.5下,转换成功完成,但是启动时报错: "由于应用程序配置不正确,未能启动该应用程序.请查看清单文件以查找可能 ...
- 【IDE-Visual Studio】无法启动程序 xxx exe 由于应用程序配置不正确,未能启动此应用程序
问题 解决方案 如下图设置工程属性: 配置属性->链接器->清单文件->生成清单=否 再分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们 ...
- 由于应用程序配置不正确,程序未能启动”--原因及解决方法
由于应用程序配置不正确,程序未能启动"--原因及解决方法 http://moogge.spaces.live.com/blog/cns!ab9b00d806d52aed!245.entry ...
- QQ提示应用程序并行配置不正确,绿色版QQ不能运行解决方法
出现此问题是因为您的计算机中缺少VC运行库导致的,建议您到互联网上下载相应的VC2005运行库,Windows 7请下载VC2008运行库安装到您的计算机中.如果您安装了运行库还是不行,建议您安装:( ...
- nvm安装和配置(npm下载失败的原因以及解决方法)
文章目录 前言 一.下载nvm安装包 二.安装nvm 三.配置nvm 1.方法一:有可能会出错的安装方式 2.方法二:一定不会出错的方法 三.多个node管理 1.确认环境 2.安装及确认 2.切换n ...
- oracle10在w7下提示无法定位,Win7提示无法定位程序输入点 于动态链接库的原因及解决方法...
无法定位程序输入点 于动态链接库上这是怎么回事?Win7系统下,用户经常是在电脑开机的时候遇到这个提示,或是在运行网络游戏及单机游戏时也会出现这种情况,偶尔也会在运行某个程序软件时显示无法找到入口,无 ...
- MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误
MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误 老姐笔记本中毒太深于病入膏肓,无奈迫写一程序"曲线救国".刚启动自己写的程序就出现应用程序配置不正确,应用程序未能 ...
- VMware Workstation 运行出现“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”解决方案
From: http://blog.csdn.net/lasig/article/details/5694895 今天安装完VMware Workstation 6.5.2之后在运行时,遇到" ...
- 【原】解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...
--更新于2011/4/19,针对最新的VS2008补丁,VS2005/2010同样适用. VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示&q ...
最新文章
- flask执行python程序_Flask app后如何执行代码(应用程序运行)开始
- prometheus 基于文件的目标发现
- 学习笔记68—PhotoShop常见快捷键
- 微信之初学者:基本的列表操作
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用
- c51语言的数据存储模式,第5章项目三单片机存储结构及C51语言.ppt
- data的值 如何初始化vue_【Vue 原理】Vue 是如何代理 data、methods 和 props 的?
- vue中加载OCX控件(IE浏览器执行)
- 【SIPp】Linux-SIPp3.6.0 测试FreeSwitch
- 假设有一个英文文本文件,编写程序读取其内容,并将其中的大写字母变为小写字母,小写字母变为大写字母。...
- 区块链+珠宝供应链金融:除了解决信任问题,他们想让数字资产流动起来
- socket中的TCP编程(调用免费聊天的机器人实现自动回复)
- 活用lambda之list函数处理
- 微信机器人网页版接口详解
- 论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)
- 163vip邮箱手机快速注册,163手机邮箱如何登录?
- JavaWeb之jsp
- 51单片机 —— 计时器
- jquery获取上级、同级和下级元素
- MySQL中级优化教程(五)——数据库建表时数据类型的选择