在我的新Windows 8 64位计算机上编译C#后,在获取OPC客户端应用程序中的可用服务器列表时,我开始收到以下错误。
“OpcNetApi.Com 无法将“System .__ ComObject”类型的COM对象转换为接口类型“OpcRcw.Comn.IOPCServerList2”。此操作失败,因为对IID为“{9DD0B56C-AD9E-43EE-8305-487F3188BF7A}”的接口的COM组件的QueryInterface调用由于以下错误而失败:未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。 “
可能是什么原因?
答案 0 :(得分:9)
引自OPC.NET自述文件:
.NET COM互操作程序集是针对32位版本构建的 代理/存根。这意味着运行的任何.NET应用程序 必须编译x64系统并将其作为32位应用程序运行
答案 1 :(得分:7)
嗨:要解决此问题,请安装OPC .NET API OPC .NET API 2.00 Redistributables 105.1,然后安装OPC Core Components Redistributable(x64)105.1。 通过这种方式,您可以连接到以64位运行的32位运行的OPC服务器。
答案 2 :(得分:2)
并且不要忘记,Redistributables(OPC .NET API OPC .NET API 2.00可再发行组件,OPC核心组件可再发行组件)和库(OpcNetApi.dll,OpcNetApi.Com.dll,OpcNetApi.Xml.dll .. 。)项目中引用的必须是相同的版本。
答案 3 :(得分:-1)
我认为唯一的问题是您试图使用不同的用户名和密码连接到远程计算机,您必须在远程计算机上创建与本地计算机用户名和密码相同的当前用户,然后必须在远程计算机“组件服务”上进行配置- >控制台根目录->组件服务->计算机-> Dcom配置-> OpcEnum设置,并在“属性”->安全中授予该用户访问权限 祝你好运