将COM组件引用添加到VB.NET项目时出现问题

时间:2008-09-24 18:08:25

标签: vb.net visual-studio com dll reference

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

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

更新1:

我在dll上运行了依赖walker,这是我在错误日志中得到的内容:

错误:由于隐式相关模块中的导出功能缺失,至少有一个模块具有未解析的导入。

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

更新2:

我转到openssl site并下载并使用其安装程序更新libeay32.dll。我在vxncom.dll上再次运行依赖walker,没有错误。回到视觉工作室,它仍然不想添加参考。与以前完全相同的错误。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

假设您没有修复它或已经转向替代品;从jeffm的回答继续是libeay32.dll正确注册操作系统?重新安装/修复通常可以修复那种类型的问题(我在MS Office和MapPoint中看到了很多,其中COM对象因某种原因偶尔会注销自己。)