昨天用kepserver准备做PLC的通讯。C#中引用了OPC的Interop.OPCAutomation.dll文件。但是遇到了问题:
KepServer = new OPCServer();
一直报错:检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
昨天找了好久,弄了好久,因为感冒了脑子不转,没弄出来。早上继续查资料,结合昨天的经历,知道了问题所在。解决方法现总结如下:
1、电脑64位。安装完kepserver之后,opc的大部分dll都在C:\Windows\SysWOW64下面。需要以下几个dll文件:
- OPCDAAuto.dll
- opc_aeps.dll
- OpcCmdPs.dll
- opcdaauto.dll
- opcproxy.dll
2、在C:\Windows\SysWOW64下面,找到cmd.exe,右键“以管理员身份运行”,必须得用管理员,不然还会报错。
3、在打开的cmd窗口里,输入REGSVR32 OPCDAAuto.dll,等等,即可。如下:
Microsoft Windows [版本 10.0.17134.829](c) 2018 Microsoft Corporation。保留所有权利。
C:\WINDOWS\system32>REGSVR32 OPCDAAuto.dll
C:\WINDOWS\system32>REGSVR32 opc_aeps.dll
C:\WINDOWS\system32>REGSVR32 OpcCmdPs.dll
C:\WINDOWS\system32>REGSVR32 opcdaauto.dll
C:\WINDOWS\system32>REGSVR32 opcproxy.dll
C:\WINDOWS\system32>
然后就不再报错了,各位切记,64位电脑,调用cmd.exe要在C:\Windows\SysWOW64下面找啊,昨天捣了一天。