2

我有一个第三方 COM dll 正在尝试添加到 vb.net (2008 express) 项目中。我将 dll 放入 C:\WINDOWS\system32\ 并使用“regsvr32 vxncom.dll”注册它。当我转到项目 > 添加参考并转到 COM 选项卡时,它会显示在可用组件/库的列表中。但是,当我选择库并点击确定时,Visual Studio 会抱怨:“无法添加对‘vxncom 4.0 库’的引用。无法注册 ActiveX 类型库‘C:\WINDOWS\system32\vxncom.dll’。”

我正在做的项目是分发 dll 的人提供的一个示例。当我启动一个新的(空白)vb.net 项目时,该组件也无法添加。

更新 1:

我在有问题的 dll 上运行了dependency walker,这是我在错误日志中得到的内容:

错误:由于隐式依赖模块中缺少导出函数,至少一个模块具有未解析的导入。

有问题的模块似乎是 libeay32.dll,但它已经存在于 C:\WINDOWS\system32 中。

更新 2:

我去了openssl 站点并下载并使用他们的安装程序来更新 libeay32.dll。我在 vxncom.dll 上再次运行了dependency walker,没有错误。回到视觉工作室,它仍然不想添加参考。与之前完全相同的错误。

4

3 回答 3

3

也许 DLL VB 正在尝试注册取决于另一个不存在的 DLL。您可以使用来自http://www.dependencywalker.com/的免费 Dependency Walker 工具来确认(或排除)

对更新 1 的响应:听起来您的系统上安装的 libeay32.dll 版本与您的组件所期望的版本不匹配——这取决于您的组件正在寻找不存在的功能。我会检查 libeay32 的版本号,然后联系供应商并询问他们支持哪些版本。

于 2008-09-24T18:35:32.290 回答
0

只是一个想法 - 如果您使用 tlbimp.exe 创建自己的 PIA,而不是依靠 IDE 为您完成,您可能会收到更详细的错误消息。

于 2009-06-09T13:00:27.497 回答
0

假设您尚未修复它或已转向替代方案;继 jeffm 的回答之后,libeay32.dll 是否已在操作系统中正确注册?重新安装/修复通常可以解决这类问题(我在 MS Office 和 MapPoint 中看到了很多,其中 COM 对象偶尔会出于某种原因注销自己。)

于 2010-12-20T21:13:58.650 回答