VS2008在64位Windows平台上编译ArcEngine导致HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)错误的解决办法。

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

 

这个错误信息是由于没有正确注册相关类所引起的。在Windows操作系统中,当我们使用的程序需要调用特定的动态链接库(DLL)或者组件时,我们需要将这些DLL或者组件正确地注册到系统中,以便程序可以调用它们。 在这种情况下,错误的原因是相关类没有被正确地注册到系统中。当我们尝试在程序中调用该类时,系统无法找到该类的注册信息,就会抛出该异常。 要解决这个问题,我们可以尝试以下几种方法: 1. 检查相关DLL或者组件是否存在:首先,我们需要确定缺失的类所属的DLL或者组件是否存在。如果没有,我们需要安装或者将其复制到正确的路径下。 2. 重新注册相关DLL或者组件:如果相关DLL或者组件已存在,我们可以尝试重新注册它们。可以使用命令行工具(如regsvr32)来注册DLL,或者使用组件提供的注册工具。 3. 检查操作系统位数:如果DLL或者组件是32位的,而操作系统是64位的,我们需要确保使用的是对应位数的注册工具进行注册。否则,仍然会出现注册失败的问题。 4. 更新或者重新安装程序:如果以上方法仍然无法解决问题,我们可以尝试更新或者重新安装使用该类的程序。有时,更新或者重新安装程序会自动注册相关类。 总结来说,没有注册类的错误是由于相关DLL或者组件没有被正确地注册到系统中所引起的。我们可以通过检查文件是否存在、重新注册DLL或者组件、检查操作系统位数以及更新或者重新安装程序等方法来解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值