我有一个VB.NET项目,它需要使用第三方DLL,其中还需要一个Interop组件。所以我有这样的东西:

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

我尝试直接在项目中直接添加对Interop的引用,但是在运行文件时,我收到了一个未注册的错误。

因此,我尝试按照以下方式注册Interop:

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

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

即使在重新启动VS之后,组件仍然看不到。

有帮助吗?

解决方案

您的regasm命令破坏了COM服务器的注册表键。您必须重新安装它。仅使用您自己的[可粘式]代码使用regasm。

您可能会使用该组件遇到麻烦的一个原因,除了没有正确安装的组件之外,您正在尝试在64位操作系统上运行它。该组件为32位,是迄今为止最常见的情况。您需要强迫您的应用程序以32位模式运行,以便能够使用它。在VB.NET IDE中,使用项目 +属性,编译选项卡,向下滚动,高级编译选项,将目标CPU设置为“ x86”。

诸如此类问题的最终故障排除工具是Sysinternals的Procmon实用程序。它向您展示了COM如何使用HKLM Software Class CLSID键来搜索加载DLL。

其他提示

您正在注册Interop,但是(如错误消息所建议)您尚未注册COM DLL。尝试这个:

regsvr32 pdcclient.dll
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top