无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类
错误描述
e = {“无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“OpcRcw.Da.IOPCServer”。此操作失败的原因是对 IID 为“{39C13A4D-011E-11D0-9675-0020AFD8ADB3}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。”}
或
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“HaiGrang.Package.OpcNetApiChs.DaInterface.IOPCServer”。此操作失败的原因是对 IID 为“{39C13A4D-011E-11D0-9675-0020AFD8ADB3}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
原因和解决方法
64位系统下,有些组件(微软的)只有32位版本,64位的应用程序调用不了32位的COM组件,返回的结果就是没有注册类
别。 在64位系统中,VS2008默认会生成64位的程序,你可以改变程序的部署平台为×86来生成32位的程序。
解决方法:
在“解决方案”-》“开发项目的名称”,鼠标右击,单击“属性”-》“生成”-》“目标平台”,把“AnyCPU”改成“
×86”,重新编译程序即可。