由于应用程序配置不正确,程序未能启动”--原因及解决方法
http://moogge./blog/cns!ab9b00d806d52aed!245.entry
问题描述:
当运行由VC 编译的程序时,出现错误消息“由于应用程序配置不正确,程序未能启动.重新安装应用程序可能会纠正这个错误”解决方法:
在目标机器安装VCRedist_x86.exe可以解决这个问题。该文件可以在MSDN网站上下载。
地址:/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=en
如果是64位机器,请用x64版本和ia64版本
原因:
一般认为,VC编译出来的东西,如果用了atl或者mfc,需要atl80.dll 或者msmfc80.dll,我在一开始的时候也是这么认为的,我把这两个文件放在了path中可以找到的地方。因此用depends看出来是没问题的。但 是事实上,从VC开始,(可能,但是我没有用过)这些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++ 的 program manager Martyn Lovell在他的blog中有提到要解释这样做的原因,但是至今没有下文:(
暂时能够知道的是,加载dll需要manifest,没有manifest的动态库即使放在path下也不会加载。而VCRedist_x86.exe会帮你把manifest和dll放在正确的地方。
参考:
Redistribution of VC++ files(VC80)
/en-us/library/ms235299(VS.80).aspx
VC8 使用WinSxS的原因:
Martyn Lovell‘s blog
今天在用VC++写一个控制台程序的时候,提示一下错误
"由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题"
下面是截图
在网上查了查,说是有可能没装Microsoft Visual C++ SP1 Redistributable Package (x86)的问题,这个好办,直接从MS网站上下了一个,重起,还不行。
试了一下release版,可以使用,细想,debug下有许多调试信息,是不是跟这些些库有关系
msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest
要使应用程序链接这些库,可以
工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
run,一切OK,
第一回用的console程序,看来和VC6.0还是有一定区别。
==================================
VC程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装...” -04-02 10:52
类别:vc开发 | 添加到搜藏 | 浏览( 300) | 评论(0) <script language="javascript"> /*');if(pre[0]){document.write('上一篇:');}/*]]>*/ </script> 上一篇: C/S分布式通讯(SOCKET技术)下一篇: 安装文件的打包
/can2786/blog/item/fa8a1fed9aec7ad0b31cb187.html
点快捷方式时出现“由于应用程序配置不正确,应用程序未能启动。...
点快捷方式时出现“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。” 悬赏分:5 - ... 桌面快捷方式无法打开对应的应用程序??? ...
/question/19594853.html 12K -2-5 - 百度快照
上的更多结果
1 [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
由于应用程序配置不正确,程序未能启动,重新安装应用程序可能会纠正这个问题。