vc2005-应用程序正常初始化失败-0xc0150002

vc2005-应用程序正常初始化失败-0xc0150002

ID:14190857

大小:52.50 KB

页数:8页

时间:2018-07-26

vc2005-应用程序正常初始化失败-0xc0150002_第1页
vc2005-应用程序正常初始化失败-0xc0150002_第2页
vc2005-应用程序正常初始化失败-0xc0150002_第3页
vc2005-应用程序正常初始化失败-0xc0150002_第4页
vc2005-应用程序正常初始化失败-0xc0150002_第5页
资源描述:

《vc2005-应用程序正常初始化失败-0xc0150002》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、最近几天被这个问题困惑了许久。不禁感叹微软的东东真是越做越烂了,也终于明白了时隔12年大家仍然死守VC6的原因。。  用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始化失败”!!查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005sp1补丁的;有让安装vcredist_x86.exe的;有让把CRT库的dll直接拷贝到程序目录的;有让清理注册表的;有让装.NetFramework新版本的;有让查manifest的;  结果我尝试了半天,几乎都是浪费时间。上面最后一条说的还算正确,只是作者把事情描述得太繁琐了。。现在把处

2、理的方法说一下,省得大家再走弯路:  1.VC2003、VC2005、VC2008及其后续版本,对底层最基本的CRT、MFC、ATL库都进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在C:\windowsWinSxS文件夹中,并用特定的文件夹文件名称进行标识;  2.与VC6不同,VC2003、VC2005、VC2008及其后续版本,引入了manifest清单的概念,即应用程序编译后会同时生成对应的.manifest文件,并将该.manifest文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录

3、了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。VC6编译的应用程序对CRT、MFC、ATL的dll都是直接调用,而VC2003、VC2005、VC2008编译的程序都是先查询编译到资源中的manifest中的记录,然后按照记录提供的版本和名称去搜寻对应的CRT、MFC、ATL库以及随库发布的.manifest文件,搜寻的路径包括当前目录、C:\windowsWinSxS等等,如果没有找到对应的库文件,则提示“应用程序正常初始化失败”;  3.因此解决这个问题的办法就是:(a)用文本编辑器打开exe或dll对应的.manifest文件,查看它引用的C

4、RT、MFC、ATL库的版本;或者,用UltraEdit直接打开exe或者dll,从资源区中找到编译进去的.manifest信息,找到它引用的CRT、MFC、ATL库的版本;或者,运行程序,当程序弹出“应用程序正常初始化失败”对话框时,在桌面上右键点击“我的电脑”-“管理”-“事件查看器”-“系统”,双击查看其中的记录,可以看到出错的原因是因为缺少了某某版本的CRT、MFC、ATL库,记录下这个版本信息;(b)记录到的库的版本信息一般类似于“Microsoft.VC90.DebugCRT”,之后到C:\windowsWinSxS或者VC200X的安装文件夹中搜索包含

5、这个字符串的文件夹和文件,将搜索到的dll和.manifest文件都拷贝到应用程序所在的文件夹中,其中,.manifest文件必须重命名为“Microsoft.VC90.DebugCRT.manifest”(这里以Microsoft.VC90.DebugCRT为例),这样应用程序就可以正常运行了;(c)注意:库的.manifest文件和dll要一同拷贝到应用程序根目录去,因为应用程序会将编译到内部的manifest信息与外部的.manifest文件进行对比,之后才会对库的dll进行调用。如果只拷贝库的dll文件是没有用的;  4.如果本机编译和运行程序都ok,但是将编译

6、好的程序拿到其它机器上确无法运行,则多半也是这个原因。另外,如果提示"应用程序配置不正确",大多也是因为上面所说的CRT、MFC、ATL库版本与应用程序不匹配导致的,可以如法炮制进行解决;在网上找出了这些方法:  方法一:  在类似C:ProgramFilesMicrosoftVisualStudio8VCredi  stDebug_NonRedistx86Microsoft.VC80.DebugCRT下找到了下列文件:  msvcm80d.dll  msvcp80d.dll  msvcr80d.dll  Microsoft.VC80.DebugCRT.m

7、anifest  把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以正确运行了。  其他release版、MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!  方法二:  修改编译选项,将/MD或/MDd改为/MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。  方法三:  工程-》属性-》配置属性-》常规-》MFC的使用,选择“在静态库中使用mfc”  这样生成的exe文件应该就可以在其他机器上跑了。  方法四:  你的vc8安装盘上找

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。