ArcEngine 9.3與64位操做系統 衝突

ArcEngine 9.3與64位操做系統 衝突
2011年03月30日 星期三 11:13

錯誤信息:web

  未處理 System.TypeInitializationException
  Message="「test.Program」的類型初始值設定項引起異常。"
  Source="test"
  TypeName="test.Program"
  StackTrace:
       在 test.Program.Main()
       在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       在 System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Runtime.InteropServices.COMException
       Message="檢索 COM 類工廠中 CLSID 爲 {E01BE902-CC85-4B13-A828-02E789E0DDA9} 的組件時失敗,緣由是出現如下錯誤: 80040154。"
服務器

------------------------------------------------------------------------------------------------------------app

一直覺得是Engine的安裝版本與機器上的其餘ArcGIS產品的版本不符,但是最後折騰到了一臺沒有裝ArcGIS產品的服務器上,問題依舊。VS調試發現,從程序的入口檢查License文件開始便報如上錯誤。在確認ArcEngine的運行許可可用的前提下,到底是什麼問題致使的這種狀況。post

緣由是:X64位的系統不支持,ui

解決辦法以下:spa

全部引用ArcEngine9.3的DLL的工程中編譯代碼的時候把目標平臺anyCPU改成X86。從新編譯就能夠了。操作系統

其餘人員的相關閱讀資料:調試

VS2010在WIN7 X64上編譯之前在x84 XP上的Skyline程序遇到一樣問題,參照以下此貼解決。orm

 

---------------------blog

VS2008 在64位的系統(XP/Vista/Win7均是)中編譯ArcEngine(9.3SP1)並運行時提示:

沒有註冊類 (異常來自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

緣由:ArcEngine9.3沒有原生支持64位,而是以32位兼容方式運行

解決辦法:在項目屬性裏設置「生成」=>「目標平臺」爲x86而不是默認的ANY CPU.

ESRI官方也是這麼解決的:

http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=33000

Bug:  Error: Class not registered(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)

Article ID: 33000
Bug Id: NIM007516
Software:  ArcGIS Engine Runtime 9.2, 9.3
Platforms:  Windows 2000, XP

 

Description

Running an application from Visual Studio 2005 on 64-bit computers, displays the following error message: 

 

"Error : Class not registered(Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)"

Cause

When running a Visual Studio application, the default Common Language Runtime (CLR) platform in the Visual Studio is set to Any CPU. This default must be changed on 64-bit computers to compile the assemblies with the 32-bit, x86 compatible CLR.

Workaround

Change the default Platform Target CPU to allow applications to run on 64-bit machines:

 

 

  1. Right-click on the solution in the Visual Studio Solution Explorer and open the Properties window.
  2. Click the compile tab: Visual Basic, or the build tab: Visual C#.
  3. For Visual Basic, click the Advanced tab.
  4. Select x86 as the Target CPU (Visual Basic) or Platform Target (Visual C#).
  5. Rebuild the solution.

Created: 5/4/2007
Last Modified: 10/30/2009

相關文章
相關標籤/搜索