跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

遇到0xc0150002错误怎么办?解决方法大揭秘!

大家好,我是陈景序,今天来跟大家聊聊一个让很多开发者头疼的问题——应用程序正常初始化失败,错误代码0xc0150002。相信很多朋友都遇到过这种情况,下面我就来跟大家详细分析一下这个问题,并提供一些实用的解决方法。

问题分析:

这个问题主要出现在使用VC2003、VC2005、VC2008及其后续版本编译的程序中。由于这些版本的VC对CRT、MFC、ATL库进行了重构,为了避免不同版本的库引起冲突,重构后的库文件一般放在C:\\windows\\WinSxS文件夹中,并用特定的文件夹和文件名称进行标识。

与VC6不同,VC2003、VC2005、VC2008及其后续版本引入了manifest清单的概念。应用程序编译后会同时生成对应的.manifest文件,并将该文件作为资源编译到dll或者exe中去。.manifest文件实际上是一个XML格式的文本文件,里面记录了dll或exe中要引用的CRT、MFC、ATL库的版本和名称。

如果找不到对应的库文件,程序就会提示“应用程序正常初始化失败”。

解决方法:

1. 用文本编辑器打开exe或dll对应的.manifest文件,查看它引用的CRT、MFC、ATL库的版本;或者,用UltraEdit直接打开exe或者dll,从资源区中找到编译进去的.manifest信息,找到它引用的CRT、MFC、ATL库的版本;或者,运行程序,当程序弹出“应用程序正常初始化失败”对话框时,在桌面上右键点击“我的电脑”-“管理”-“事件查看器”-“系统”,双击查看其中的记录,可以看到出错的原因是因为缺少了某某版本的CRT、MFC、ATL库,记录下这个版本信息。

2. 记录到的库的版本信息一般类似于“Microsoft.VC90.DebugCRT”,之后到C:\\windows\\WinSxS或者VC200X的安装文件夹中搜索包含这个字符串的文件夹和文件,将搜索到的dll和.manifest文件都拷贝到应用程序所在的文件夹中,其中,.manifest文件必须重命名为“Microsoft.VC90.DebugCRT.manifest”(这里以Microsoft.VC90.DebugCRT为例),这样应用程序就可以正常运行了。

3. 注意:库的.manifest文件和dll要一同拷贝到应用程序根目录去,因为应用程序会将编译到内部的manifest信息与外部的.manifest文件进行对比,之后才会对库的dll进行调用。如果只拷贝库的dll文件是没有用的。

4. 如果本机编译和运行程序都ok,但是将编译好的程序拿到其它机器上确无法运行,则多半也是这个原因。另外,如果提示

相关文章