我是.Net开发人员。 OPC的新手。当我尝试一些OPC客户端样本时,所有这些样本都会出现此错误。似乎DLL似乎没有注册。但我不知道如何以及在何处注册。
error: retrieving the COM class factory for component with CLSID failed due to the following error: 80040154
即使我试过这个
regsvr32 Interop.OPCAutomation.dll",
但它也会抛出错误
The module "Interop.OPCAutomation.dll" was loaded but the entry-point DllRegisterServeer was not found.
Make sure that "Interop.OPCAutomation.dll" is a valid DLL or OCX file and then try again.
我经历了这么多现有的论坛。他们中的很多人都表示将平台目标更改为x86,但我仍然遇到同样的问题。仅供参考,我只能在“项目属性”的“构建”选项卡顶部的“平台”选项中看到“活动(任何CPU)”。
这是我的环境细节:
.Net 2005
OPCAutomation Weapper
Windows 7 64-bit OS
Dell Inspiron 1525 (I hope this is not a 64bit machine, but my engineer installed 64bit OS somehow).
请帮我。
提前致谢!
以防万一有人正在处理这个问题(我最近一直在......)我完成了它!过了一段时间,我发现它是关于在64位机器上运行的.NET框架。只要.NET应用程序仅适用于32位CLR,我们必须设置.NET框架以在WOW模式下加载CLR。为此,请键入:
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Ldr64.exe SetWow
在此之后,您应该能够运行应用程序。
您可以通过键入以下命令返回并恢复以前的.NET Framework:
C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\Ldr64.exe Set64
如果使用OPC客户端工具包SDK(C ++),远程注册表服务的问题也可能导致此错误。
在Windows 7上,默认情况下,远程注册表服务设置为手动但未启动。确保在要部署到的所有计算机上启动Remote Registry服务。这可以手动完成或使用组策略完成。
GetCLSIDFromRemoteRegistry()函数使用RemoteRegistryService来获取OPC服务器的CLSID。如果未在客户端计算机上启动此服务,则OPC程序可能会返回错误80040154。
您获得的错误很可能是由于OPC服务器未正确注册。确保它已注册(通常通过在命令行中使用“/ regserver”或“/ service”参数运行它)。可能还存在安全问题,在这种情况下,您必须运行“dcomcnfg”(DCOM Config)以确保客户端可以访问服务器。
这个问题有点过时了,所以我希望你现在想出来,但我有同样的问题,想分享我的解决方案。就我而言,我使用的是Kepware服务器。如果您编译并尝试在没有安装服务器的计算机上使用Interop.OPCAutomation运行此服务器的客户端应用程序,您将获得一个DLL未注册错误,如果您尝试注册该DLL,则“找不到入口点”手动。
解决方案:确保已安装并运行服务器。
虽然这是一篇很老的帖子,但我想分享一下我的解决方案。
我的问题是,当我尝试使用OPCAutomation.dll安装应用程序时,它给了我80040154错误,因为该类未注册。
这是我的解决方案,始终具有管理员权限:
希望这可以帮助!