2011-03-22 109 views
3

我在vb.net中编写了一个调用Web服务的dll,消耗返回的数据,然后将结果传递回调用程序。我最初在VS 2008中写过,在Windows 7(x64)上。测试它也在Windows 7上编写的vb 6程序,一切正常。 vb6程序获得了数据,我可以继续前进。在vb6中使用.net dll

对我来说,真实的世界,虽然是用VB编写的6我得到的错误“ActiveX组件不能创建对象”时,我得到的代码

Dim myWebService as webService.ComClass1
Set myWebService = New webService.ComClass1

我另一个DLL里面这个dll已经在WindowsXP(x86)上重新编译了我的代码,并通过.dll和.tbl重新编译。

当我尝试注册dll时,出现错误:'找不到DllRegisterServer入口点'。 .tbl似乎在VB中注册得很好,只要添加一个引用并且intellesense也可以工作。

有没有人有任何想法,我需要做些什么来得到这个工作?

回答

4

您不要使用Regsvr32.exe注册.NET程序集。您必须使用Regasm.exe,您会在框架目录中找到该工具。如果您未将程序集放入GAC,请使用/ codebase选项。你不应该在开发机器上。

这可能是因为你让Visual Studio为你做的。

+0

我试过使用/ codebase选项,但我得到一个错误,说它没有签名。我怎么做?此外,我现在得到一个错误,说“自动化错误,系统找不到指定的文件”。 – spuppett 2011-03-22 19:27:20

+1

这不是一个错误,它是一个警告。它的意思是“你确定你不介意处理DLL地狱?”现在你不知道,你只有一个。不知道它找不到哪个文件,也许你在得到警告后没有使用/ codebase?您可以使用SysInternals的ProcMon工具查看它正在查找的内容。 – 2011-03-22 19:38:28

+0

得到它的工作。谢谢一堆! – spuppett 2011-03-22 19:46:16

0

您不能注册.net DLL与VB6 dll相同。 .NET DLL里面没有tlb,它是独立的。

相反,在.net dll上使用REGASM。它在您的计算机上,但您需要执行搜索才能找到它,因为默认情况下它不在路径中。