编译osg后,应用程序初始化失败(0xc0150002)的问题
现象:跟踪查找,发现问题是由于编译生成的osgDBd.lib中包括了zlib1d.lib,查看系统日志有3个SideBySide错误,错误内容如下:"找不到附属汇编 Microsoft.VC80.DebugCRT,上一个错误是 参照的汇编没有安装在系统上。"
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
为什么一个库还要同时依赖2个版本的VC运行时呢?因为zlib1d.lib这个第三方库是用vs2005编译的,而我们编译osg源码用的是vs2008。
原因:3rdParty”中的*d.lib与你所用的vs版本不同
解决方法:一、将3rdParty/bin中的*.lib改为*d.lib;二、下载第三方依赖库源码重新用vs2008生成lib文件。
参考信息:
http://lixinyiabc123.blog.163.com/blog/static/140977406201022891532282/