无法将类型为“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”,重新编译程序即可。




免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM