0

我有一个需要使用第三方 DLL 的 VB.Net 项目,其中还有一个互操作程序集。所以我有这样的事情:

Hummingbird.DM.Server.Interop.PCDClient.dll
PCDClient.dll

我尝试直接在项目中添加对互操作的引用,但在运行文件时出现 COM 未注册错误。

因此,我尝试按如下方式注册互操作:

gacutil /if "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

regasm "C:\....\Hummingbird.DM.Server.Interop.PCDClient.dll"

即使重新启动 VS,程序集仍然不可见。

4

2 回答 2

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。

于 2011-01-14T17:06:17.760 回答
0

您正在注册互操作,但(如错误消息所示)您尚未注册 COM DLL。试试这个:

regsvr32 pdcclient.dll
于 2011-01-14T16:52:16.643 回答