注册Vb.NET DLL时出现DllRegisterServer入口点未找到的错误?

3
我用vb.net编写了一个dll,调用了一个web服务,消费返回的数据,然后将结果传回调用程序。我最初在Windows 7(x64)上使用VS 2008编写它,在同样在Windows 7上编写的vb 6程序中进行了测试,一切正常。 vb6程序收到了数据,我可以继续操作。
但是,实际应用场景中我需要在另一个使用vb 6编写的dll中使用该dll。当我到达以下代码时,会出现“ActiveX组件无法创建对象”的错误: Dim myWebService as webService.ComClass1 Set myWebService = New webService.ComClass1
我已经在Windows XP(x86)上重新编译了代码,并复制了.dll和.tlb文件。 当我尝试注册dll时,我得到一个错误:“找不到DllRegisterServer入口点”。至于在VB中添加对.tlb的引用和智能感知也可以正常工作。 请问有人有任何想法吗?
2个回答

4

你不能使用Regsvr32.exe来注册.NET程序集。你需要使用Regasm.exe,这个工具在框架目录中可以找到。如果你没有将程序集放在全局程序集缓存中,请使用/codebase选项。在开发机器上不应该这样做。

以前可能因为你让Visual Studio替你完成这项工作,所以这个方法还能用。


我尝试使用/codebase选项,但是出现了一个错误,说它没有签名。我该怎么做?此外,现在我收到一个错误,说“自动化错误。系统找不到指定的文件”。 - spuppett
1
这不是一个错误,而是一个警告。它的意思是“你确定不介意处理 DLL 地狱吗?”现在你还没有遇到,只有一个警告。不确定它找不到哪个文件,也许你在收到警告后没有使用 /codebase?你可以使用 SysInternals 的 ProcMon 工具查看它正在寻找什么。 - Hans Passant

0

你不能像注册VB6 dll一样注册.net DLL。.NET DLL中没有tlb,它是单独的。

相反,使用REGASM来处理.net dll。它在你的电脑上,但你需要搜索才能找到它,因为它不在默认路径上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接