我有一个VB.Net项目需要使用第三方DLL,其中还有一个互操作程序集。所以我有这样的事情:
Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll
我尝试在项目中直接添加对interop的引用,但在运行该文件时,我收到了COM未注册的错误。
所以,我尝试按如下方式注册互操作:
gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"
regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"
即使重新启动VS,组件仍然不可见。
答案 0 :(得分:1)
您的regasm命令销毁了COM服务器的注册表项。你必须重新安装它。只能在自己的[ComVisible]代码上使用regasm。
除了没有正确安装之外,您可能无法使用该组件的一个原因是您尝试在64位操作系统上运行此组件。该组件是32位,是目前最常见的情况。您需要强制您的应用程序以32位模式运行才能使用它。在VB.NET IDE中,使用Project + Properties,Compile选项卡,向下滚动,Advanced Compile Options,将Target CPU设置为“x86”。
针对此类问题的最终故障排除工具是SysInternals的ProcMon实用程序。它向您展示了COM如何使用HKLM \ Software \ Classes \ CLSID键来搜索要加载的DLL。
答案 1 :(得分:0)
您正在注册互操作,但(如错误消息所示)您尚未注册COM DLL。试试这个:
regsvr32 pdcclient.dll