[转]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
?
?
轉(zhuǎn)載請保留本行原始鏈接信息 : http://www.zeali.net/entry/476 MADE 1n ZEAL 標(biāo)簽 ( 開發(fā)/理論 ): vs.net?,?error Could not load file or assembly '... ...' or one of its dependencies. 由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動 ...兩個工程分別是 .net2005下的 C# 和 C++ , C++ 工程使用 C++/CLI 封裝了幾個功能函數(shù)并在 C# 工程中加載使用封裝類。在本地運行正常,但發(fā)布到其他機器上卻出現(xiàn)異常對話框:“??Could not load file or assembly '... ...' or one of its dependencies. 由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動。重新安裝應(yīng)用程序可能會糾正這個問題。 ( Exception from HRESULT: 0x800736B1 )?”。
這個錯誤看上去好像是 C++ DLL庫本身的問題,其實并不盡然。由于使用了混合模式編譯托管 DLL ,所以該 DLL 又會用到非托管的 CRT ( C Run-Time )庫。如果機器上沒有安裝這些被使用到的運行時組件,就會產(chǎn)生類似 HRESULT: 0x8007 的錯誤。最簡單的方法是下載安裝 Microsoft Visual C++ 2005 Redistributable Package (x86)以得到代碼運行所需的 msvcr80.dll 及 msvcm80.dll 等;也可以到系統(tǒng)盤下的 Program Files\Common Files\Merge Modules 目錄下找到包含 CRT 字樣的 msm 文件,把這些文件添加到你的安裝程序里面可以達(dá)到同樣的效果;如果 C++ 生成的不是 dll 而是可執(zhí)行文件的話,也可以按照微軟的說明直接把需要的dll拷貝到應(yīng)用程序目錄下。更為細(xì)致的分析說明可以參考這里:Bootstrapper for the VC++ 2005 Redists (with MSI 3.1)。
要注意的是,如果你編譯 C++ 托管程序集的時候使用的是 Debug 配置的話,生成的 DLL 需要調(diào)用的就是 CRT 對應(yīng)的 debug 版本( msvcr80d.dll 及 msvcm80d.dll 等 )而不是上面那些 Redistributable Package 里面的文件。這樣的話即使你使用任何一種方法去安裝那些運行時庫文件也還是同樣會得到錯誤異常對話框。了解生成的 DLL 到底是 Debug 還是 Release 版本最簡單的方法是用文本編輯器打開該 DLL 文件,找到以下類似的內(nèi)容(一般位于文件末尾處):
view plaincopy to clipboardprint?
?
如果看到 Microsoft.VC80.DebugCRT ,那說明該 dll?Link的目標(biāo)是 CRT的Debug版本,如果是 Microsoft.VC80.CRT 則 link 到再分發(fā)版本。當(dāng)我在 VS.net2005 的 IDE 中通過批生成來生成 C# exe 和 C++ dll 的時候,如果當(dāng)前的活動解決方案配置是 Debug 的話,在 C# 項目的Release輸出目錄下拷貝的會是 C++ dll 的 Debug 版本文件而不是 Release 版本!所以在發(fā)布生成之后確認(rèn)對應(yīng)文件的版本還是相當(dāng)有必要的。
另一個可能性是如果你的硬盤分區(qū)為 FAT32 格式的話, VS.net 在編譯 C++ dll 的時候有可能會因為時間戳計算的失誤而沒有把正確的 Manifest 信息(基本上就是上面提到的那部分 xml 配置信息)寫到 dll 里面,導(dǎo)致程序運行時得不到正確的 dependency 信息產(chǎn)生加載錯誤。所以如果上述操作仍然無法解決錯誤的話,考慮在“屬性->配置屬性->清單工具->常規(guī)”下把“使用FAT32解決辦法”選項設(shè)置為"是"。
?
Microsoft.VC90.DebugCRT.manifest
msvcm90d.dll
msvcp90d.dll
msvcr90d.dll
轉(zhuǎn)載于:https://www.cnblogs.com/aooyu/archive/2009/12/17/1626587.html
總結(jié)
以上是生活随笔為你收集整理的[转]Mogre 环境配置问题(Exception from HRESULT: 0x800736B1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】asp.net mvc生成验证码
- 下一篇: dedecms 文章回收站 记得及时清理