[转]Mogre 环境配置问题(Exception from HRESULT: 0x800736B1)
样例程序做好啦,运行报错
Unhandled Exception: System.IO.FileLoadException: Could not load file or assemby "Mogre, Version=1.4.8.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem. (Exception from HRESULT: 0x800736B1)
郁闷了几天,终于解决了。
要安装
Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
安装 vc2005 sp1 就不行
下载地址:vcredist_x86.exe
两个工程分别是 .net2005下的 C# 和 C++ , C++ 工程使用 C++/CLI 封装了几个功能函数并在 C# 工程中加载使用封装类。在本地运行正常,但发布到其他机器上却出现异常对话框:“ Could not load file or assembly '... ...' or one of its dependencies. 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。 ( Exception from HRESULT: 0x800736B1 ) ”。
这个错误看上去好像是 C++ DLL库本身的问题,其实并不尽然。由于使用了混合模式编译托管 DLL ,所以该 DLL 又会用到非托管的 CRT ( C Run-Time )库。如果机器上没有安装这些被使用到的运行时组件,就会产生类似 HRESULT: 0x8007 的错误。最简单的方法是下载安装 Microsoft Visual C++ 2005 Redistributable Package (x86)以得到代码运行所需的 msvcr80.dll 及 msvcm80.dll 等;也可以到系统盘下的 Program Files\Common Files\Merge Modules 目录下找到包含 CRT 字样的 msm 文件,把这些文件添加到你的安装程序里面可以达到同样的效果;如果 C++ 生成的不是 dll 而是可执行文件的话,也可以按照微软的说明直接把需要的dll拷贝到应用程序目录下。更为细致的分析说明可以参考这里:Bootstrapper for the VC++ 2005 Redists (with MSI 3.1)。
要注意的是,如果你编译 C++ 托管程序集的时候使用的是 Debug 配置的话,生成的 DLL 需要调用的就是 CRT 对应的 debug 版本( msvcr80d.dll 及 msvcm80d.dll 等 )而不是上面那些 Redistributable Package 里面的文件。这样的话即使你使用任何一种方法去安装那些运行时库文件也还是同样会得到错误异常对话框。了解生成的 DLL 到底是 Debug 还是 Release 版本最简单的方法是用文本编辑器打开该 DLL 文件,找到以下类似的内容(一般位于文件末尾处):
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1"
- manifestVersion="1.0">
- <dependency>
- <dependentAssembly>
- <assemblyIdentity type="win32"
- name="Microsoft.VC80.DebugCRT"
- version="8.0.50608.0"
- processorArchitecture="x86"
- publicKeyToken="1fc8b3b9a1e18e3b">
- </assemblyIdentity>
- </dependentAssembly>
- </dependency>
- </assembly>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"> </assemblyIdentity> </dependentAssembly> </dependency></assembly>
如果看到 Microsoft.VC80.DebugCRT ,那说明该 dll Link的目标是 CRT的Debug版本,如果是 Microsoft.VC80.CRT 则 link 到再分发版本。当我在 VS.net2005 的 IDE 中通过批生成来生成 C# exe 和 C++ dll 的时候,如果当前的活动解决方案配置是 Debug 的话,在 C# 项目的Release输出目录下拷贝的会是 C++ dll 的 Debug 版本文件而不是 Release 版本!所以在发布生成之后确认对应文件的版本还是相当有必要的。
另一个可能性是如果你的硬盘分区为 FAT32 格式的话, VS.net 在编译 C++ dll 的时候有可能会因为时间戳计算的失误而没有把正确的 Manifest 信息(基本上就是上面提到的那部分 xml 配置信息)写到 dll 里面,导致程序运行时得不到正确的 dependency 信息产生加载错误。所以如果上述操作仍然无法解决错误的话,考虑在“属性->配置属性->清单工具->常规”下把“使用FAT32解决办法”选项设置为"是"。
Microsoft.VC90.DebugCRT.manifest
msvcm90d.dll
msvcp90d.dll
msvcr90d.dll
转载于:https://www.cnblogs.com/aooyu/archive/2009/12/17/1626587.html
[转]Mogre 环境配置问题(Exception from HRESULT: 0x800736B1)相关推荐
- Exception from HRESULT: 0x800736B1
c#调用C++动态库出现的错误,找到这个地址的解决方案,暂时记下来,回去试验,有结果再来反馈http://dearymz.blog.163.com/blog/static/20565742008211 ...
- Could not load file or assembly (Exception from HRESULT: 0x80131047)-解决办法
场景:.Net 4.0 MVC WebAPI 应用程序添加ApplicationInsights监控后在demo环境运行正常,发布到testing环境出现异常 异常信息: Could not load ...
- window环境下mysql配置参数_Window下mysql环境配置问题整理
Window下mysql环境配置问题整理 参考如下链接. 启动服务错误信息 管理员模式打开cmd mysqld install net start mysql MYSql服务正在启动 MYSql服务无 ...
- Exception from HRESULT: 0x800A03EC
Exception from HRESULT: 0x800A03EC 分类: asp.net 2013-03-04 18:16 1191人阅读 评论(0) 收藏 举报 Exception from H ...
- 客户端手册_增值税发票管理系统“2.0”版——客户端环境配置问题
今日关注客户端环境配置问题 小税,新的管理平台要上线啦,增值税发票管理系统 2.0 版本对运行环境有啥要求吗? 运行环境要符合以下几点要求哦:1.WINDOWS XP(WINDOWS XP.WINDO ...
- 谨慎解决:找不到指定的模块(Exception from HRESULT:0X8007007E)
问题:找不到指定的模块(Exception from HRESULT:0X8007007E) 问题描述: 这个问题想必大家都碰到过,但始终很难找到解决问题的答案.其实这个问题的描述本来就有些模糊,说是 ...
- 试图加载格式不正确的程序。 (Exception from HRESULT: 0x8007000B)
1. VS2010,新建立一个控制台项目,用于测试编写的一个C++ DLL,但调用测试函数时候报错: "试图加载格式不正确的程序. (Exception from HRESULT: 0x80 ...
- System.DllNotFoundException: Unable to load DLL 'XX.dll': 找不到指定的模块。 (Exception from HRESULT:
自己是做C#上位机开发的,在公司一个项目中,需要由下位机开发的同事给到C++写的dll供上位机调用,在win10的64位上开发的程序,到了win7的64位上使用不了,以下是报错内容: System.D ...
- Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7...
Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7 1. 1. javascript异常处理机 ...
最新文章
- 客快物流大数据项目(五十六): 编写SparkSession对象工具类
- PyQt 编程基本思想-HelloWorld
- Java中的OutOfMemoryError
- php 自带缓存,封装ThinkPhP自带的缓存机制
- if( 1 == x ) 比 if( x == 1 ) 哪个好
- linux查进程内存问题,关于linux下内存问题排查的工具
- windows、ubuntu、Red Hat、Solaris 单网卡绑定多个IP
- J-link固件修复记录
- 小红帽linux软件,linux常用软件类表
- React中使用worker线程
- 关于微信适配的坑==》ios、安卓强制微信字体
- 二阶常系数齐次线性微分方程通解的求取
- 【textarea】按下回车发送消息不换行,怎么实现?
- hypot函数、fmod函数
- Windows驱动开发WDM (1) - 基本结构
- 修改服务器端数据库,问道1.6 开区 服务器环境配置 数据库修改 服务端启动教程...
- flash插件+linux,Linux下的flash插件
- mysql docker还是rds_rds · 输出自己/docker-mysql - Gitee.com
- java接口废弃注释_Spring Boot如何让Web API自动生成文档,并解决swagger-annotations的API注解description属性废弃的问题...
- P2中ZYNQ的PS控制PL端LED
热门文章
- 从分子层面雕刻肌肉,新数学模型预测锻炼肌肉最优方式
- mysql索引_效率测试(包含测试sql脚本300万条数据),可用作教学案例。
- ORA-00257: archiver error. Connect internal only, until freed.
- Oracle 10g客户端的安装和配置
- Gradient Boost Decision Tree(GBDT)中损失函数为什么是对数形式
- 每次都能遇到的莫名其妙问题,谨记,速查手册
- JavaEE的13种核心技术
- Oracle触发器详细介绍
- 奈奎斯特采样定理_通俗理解奈奎斯特带宽
- Linux五部分的含义,Linux 目录下部分重要目录的用途及含义及一些命令的作用