首页 > 代码库 > (转)关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案
(转)关于“应用程序正常初始化(0xc0150002)失败”问题的解决方案
最近我在进行Ogre+CEGUI方面的编程,在VS2005环境下,程序能顺利地在Release和Debug模式下编译并生成。但是在Debug模式下,程序死活运行不成功,弹出如下的提示框。但在Release下却是正常的。真TMD令人头痛!用VS调式你会发现
查看系统日志有3个SideBySide错误,错误内容如下:"找不到附属汇编 Microsoft.VC80.DebugCRT,上一个错误是 参照的汇编没有安装在系统上。"
在去XP系统目录中的WinSxs中找了一下,发现果然没 x86_Microsoft.VC80.DebugCRT之类的文件件。
- 方法
为什么一个库还要同时依赖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