关于VC出现 0x0C150002 错误的原因以及解决方案
2014-12-08 12:43
597 查看
情景重现
2013年7月29日,我在Windows
7 x86 SP1中文专业版系统环境下使用Visual Studio 2005 SP1中文版编写应用程序。
编写完成后在Windows 7
x64 英文旗舰版系统环境下运行。
悲剧的事情粗现了!程序在启动的时候弹出了
0x0c150002 的错误提示。起初我并不知道是什么原因,根据以往的经验应该是编译出了问题。于是我将所有的dll与exe都用MT编译选项编译成了静态的模块。
结果运行时还是悲剧。
接下来查看Windows系统日志,发现程序运行时出现了SideBySide错误。
这里简单的介绍一下VC库的链接原理:
每一个VC库分为CRT、ATL、MFC等等,微软称之为“程序集”。通常情况下我们使用的是CRT库。那么CRT库其实也是有版本之分的。
以VC2005来看,它的CRT库分别有8.0.50727.42、8.0.50727.762、8.0.50727.1833、8.0.50727.4027、8.0.50727.4053、8.0.50727.4927、8.0.50727.4940、8.0.50727.6159这几个版本。
我们在实际的编译链接过程中VS会根据当前版本来决定使用哪一个,具体原理我还没有摸清楚,但估计是使用当前相匹配的程序集的最高版本进行链接。
那么这个程序在拿到其他计算机运行时,计算机根据其清单中的程序集版本寻找相应的库进行匹配,如果找不到就会反馈0x0c150002的SideBySide错误。
当我发现这个问题的时候,以为是我编译选项出错了。而事实上,这个东西与静态编译选项什么的无关。
2013年7月29日,我在Windows
7 x86 SP1中文专业版系统环境下使用Visual Studio 2005 SP1中文版编写应用程序。
编写完成后在Windows 7
x64 英文旗舰版系统环境下运行。
悲剧的事情粗现了!程序在启动的时候弹出了
0x0c150002 的错误提示。起初我并不知道是什么原因,根据以往的经验应该是编译出了问题。于是我将所有的dll与exe都用MT编译选项编译成了静态的模块。
结果运行时还是悲剧。
接下来查看Windows系统日志,发现程序运行时出现了SideBySide错误。
这里简单的介绍一下VC库的链接原理:
每一个VC库分为CRT、ATL、MFC等等,微软称之为“程序集”。通常情况下我们使用的是CRT库。那么CRT库其实也是有版本之分的。
以VC2005来看,它的CRT库分别有8.0.50727.42、8.0.50727.762、8.0.50727.1833、8.0.50727.4027、8.0.50727.4053、8.0.50727.4927、8.0.50727.4940、8.0.50727.6159这几个版本。
我们在实际的编译链接过程中VS会根据当前版本来决定使用哪一个,具体原理我还没有摸清楚,但估计是使用当前相匹配的程序集的最高版本进行链接。
那么这个程序在拿到其他计算机运行时,计算机根据其清单中的程序集版本寻找相应的库进行匹配,如果找不到就会反馈0x0c150002的SideBySide错误。
当我发现这个问题的时候,以为是我编译选项出错了。而事实上,这个东西与静态编译选项什么的无关。
相关文章推荐
- 关于ORA-04091异常的出现原因,以及解决方案
- 使用第三方库出现找不到so库UnsatisfiedLinkError错误的原因以及解决方案
- 使用第三方库出现找不到so库UnsatisfiedLinkError错误的原因以及解决方案
- 关于ORA-04091异常的出现原因,以及解决方案
- 关于ORA-04091异常的出现原因,以及解决方案
- 关于.net framework 2.0安装中出现的0x80131107错误的解决方案大全
- 关于用DB2v8.2驱动连接数据库出现 No suitable driver错误的解决方案
- Delphi 有关日期时间的函数,以及StrToDateTime函数在不同系统出现错误的解决方案
- 关于VC6.0++中以及VS2008中编译出现的LINK错误
- 关于异常的小程序出现debug assertion failed!错误的原因是什么?
- 关于VC2008编译出现错误“error C2664: ” 的处理方法:
- 关于maya与max互导FBX出现错误的解决方案。
- 关于使用CursorAdapter()时出现“column '_id' does not exist”错误的说明及解决方案
- VC中出现error C2143: syntax error : missing ';' before '*'错误的解决方案
- 关于“检索COM类工厂中CLSID为{F812B147-0E26-4222-8EE4-9F753CD2B39C}的组建时失败,原因是出现以下错误:80040154”的解决方法
- 给Eclipse安装eUML2插件以及可能出现的依赖错误解决方案
- 关于在设计SqlDataAdapter并使用带有参数的 SQL或存储过程时,出现的必须声明 @参数名 的错误解决方案
- 关于在SQL Server2005中还原SQL Server2000数据库文件出现3154的错误解决方案
- 关于使用<ajax:CascadingDropDown>控件出现的500错误和ScriptManager出现的注册表冲突错误解决方案
- 关于VC6.0++中以及VS2008中编译出现的LINK错误