(转)关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案

最近我在进行Ogre+CEGUI方面的编程,在VS2005环境下,程序能顺利地在Release和Debug模式下编译并生成。但是在Debug模式下,程序死活运行不成功,弹出如下的提示框。但在Release下却是正常的。真TMD令人头痛!用VS调式你会发现

LDR: LdrpWalkImportDescriptor() failed to probe ***.dll for its manifest, ntstatus 0xc0150002

查看系统日志有3个SideBySide错误,错误内容如下:"找不到附属汇编 Microsoft.VC80.DebugCRT,上一个错误是 参照的汇编没有安装在系统上。"

在去XP系统目录中的WinSxs中找了一下,发现果然没 x86_Microsoft.VC80.DebugCRT之类的文件件。

现在问题原因就明朗很多了,我们所编译生成的应用程序由于缺少必需的Debug版本的VC运行库而发生错误。因此解决方案就有多种了。

  • 方法

安装VC运行库(Debug),在VS2005目录下,进入VC edist这个目录,里面就存放在release和debug模式下的VC运行库,将你所需的Dll库文件和manifest文件复制到你应用程序目录,点击你就会发现程序可以运行了!

PS:

在我这次编程中,链接到CEGUIBase_d.dll动态链接库,应用程序错误就是由于这个库。于是我去CEGUI SDK目录看了一下,找到生成这个库的manifest文件,打开文件你会发现如下图所示的那样,出现2个dependency的运行库,即2个版本的VC运行库,"Microsoft.VC90.DebugCRT" version="9.0.21022.8" 和 "Microsoft.VC80.DebugCRT" version="8.0.50727.4053"。

为什么一个库还要同时依赖2个版本的VC运行时呢??令人不解啊!!!

检查CEGUI SDK的解决方案,要生成CEGUIBase_d.dll这个库,需要CEGUIBase的源文件,此外还需要一个Dependences,它包含了CEGUIBase所必需的库。由于这个库下载来时已经生成好了,所以我认为:CEGUIBase_d.dll依赖2个运行时,是因为其所依赖的库在另一个编译环境生成的。这很容易就可以发现,在同一个解决方案中的CEGUIOgreRenderer项目中,生成CEGUIOgreRenderer.dll文件同时也伴随着其manifest文件,打开可以发现,其只依赖于一个VC运行时,即当前编译环境的运行时。

因此解决这个问题的方法就可以这样:下载相对应的Dependences库文件,或者下载所依赖库文件的源代码,重新编译。最终目的就是使库依赖当前编译环境使用的VC运行库版本。重新编译一下,你会惊奇地发现,现在的manifest文件中显示,只依赖一个VC运行库。哈哈哈,这就成了!

注:这是俺原创的,不容易的!!!!

仅供大伙和自己参考!

 

 

 

注意使用Dependency Walker 这个工具,可以查看程序依赖那些库!!!!

补充:详细资料

1. http://blog.csdn.net/wengyb/archive/2009/07/09/4335092.aspx

2. http://blog.csdn.net/avagrant158/archive/2009/10/28/4737212.aspx

(转)关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案

时间: 2024-08-29 14:54:05

(转)关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案的相关文章

[zz]VC2005-应用程序正常初始化失败-0xc0150002

最近几天被这个问题困惑了许久. 不禁感叹微软的东东真是越做越烂了,也终于明白了时隔12年大家仍然死守VC6的原因.. 用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示"应用程序正常初始化失败"!! 查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005 sp1补丁的:有让安装vcredist_x86.exe的; 有让把CRT库的dll直接拷贝到程序目录的; 有让清理注册表的;有让装.NetFramework新版本的;有让查manifest的; 结果我尝试

基础提供程序在Open上失败

"基础提供程序在Open上失败" 看到这个题目相信有很多人会一眼看出"病症"所在,也会有人不知所然.由于多次碰到了这个问题,现分享一下自己的经验! 解决思路: 网上有很多解决方案,相信也是遇到了不同的情况,经过多番尝试之后发现自己的症状和网上给的解决方案不尽相同,自己的项目中用到了EF,在经过一番调试之后发现,每每运行到Model实例化的时候就会提示错误,所以对数据这里产生了怀疑,当打开自己的数据库发现果不其然,由于数据库连接失败导致EF获取数据时Open失败! 总

无法加载 DLL“rasapi32.dll”: 动态链接库(DLL)初始化例程失败。的处理备注方案

网站提示   无法加载 DLL"rasapi32.dll": 动态链接库(DLL)初始化例程失败. (异常来自 HRESULT:0x8007045A). <system.net><defaultProxy><proxy usesystemdefault="false" /></defaultProxy></system.net> 初步怀疑是因为做了云加速服务造成的代理问题,自己瞎猜!反正应该管用

【学习笔记】DirectX应用程序如何初始化

一.使用Windows API创建一个窗口 二.创建一个Swap Chain(交换链) 这一步需要用到一个名为DXGI_SWAP_CHAIN_DESC的结构体,其详细定义如下: typedef struct DXGI_SWAP_CHAIN_DESC { DXGI_MODE_DESC BufferDesc; DXGI_SAMPLE_DESC SampleDesc; DXGI_USAGE BufferUsage; UINT BufferCount; HWND OutputWindow; BOOL W

EntityFramework 基础提供程序在 Open 上失败

最近项目开始上线,所以抽时间学习了一下EF.虽然项目中一直在用,但是因为一些原因,一直是知其然不知其所以然,紧紧只限于会用而已.这两天自己搭建了一个MVC的EF框架,虽然也有参考网上各种资料,但是依然不是很顺路. 所以就遇上了题目的问题,在写入数据库的时候报错: 基础提供程序在 Open 上失败 !SaveChanges  的时候出错! users user = new users(); TryUpdateModel(user); //将实体以基础数据添加到集的基础上下级 db.users.Ad

安装程序无法初始化。请下载Adobe Support Advisor检测该问题

adobe FLASH BUILDER 4.6在安装时出现各种各样的问题,虽然绿化版安装方便,但是平均5分钟一崩溃实在让人头大.安装时出现“安装程序无法初始化.请下载Adobe Support Advisor检测该问题”的弹窗,下载运行后问题仍然存在.使用Adobe Creative Suite Cleaner Tool清除了之前所有版本依然没用.经过Google搜索在Java堂找到方法:只要将“Program Files\Common Files\Adobe\OOBE”目录删除就可以了.如果是

MFC六大核心机制之一:MFC程序的初始化

MFC六大核心机制概述 我们选择了C++,主要是因为它够艺术.够自由,使用它我们可以实现各种想法,而MFC将多种可灵活使用的功能封装起来,我们岂能忍受这种"黑盒"操作?于是研究分析MFC的核心机制成为必然. 首先,列出要讲的MFC六大核心机制: 1.MFC程序的初始化.       2.运行时类型识别(RTTI).       3.动态创建.       4.永久保存.       5.消息映射.       6.消息传递. C++代码 #include <afxwin.h>

EF出现基础提供程序在 Open 上失败

一.问题: 项目结构图如图所示,项目用EF完成数据层,需要对三个基地的oracle数据库读写,建立了分别三个数据实体. 项目拷贝给同事调试基础提供程序在 Open 上失败. 二.解决方法: 需要将ODP.NET安装路径下得配置文件tnsnames.ora  随项目一起拷贝.

.net mvc项目报错 ”基础提供程序在 Open 上失败”

问题: 今天将一个.net mvc项目拷贝到另一台电脑上,重新部署的时候,出现以下异常信息: "System.Data.Entity.Core.EntityCommandExecutionException"类型的异常在 EntityFramework.SqlServer.dll 中发生 "基础提供程序在 Open 上失败"   no.1  问题查找 1.在Webconfig文件查看连接SQL Server数据库的字符串是否正确 2.SQL设置允许选程连接 经过查找