我有一个用.Net编写的类库,我想提供给VB6 / VBA。我尝试过的东西不起作用(显然我在问这个问题)。这是我做的:
模块“MyDll.dll”已加载,但未找到入口点DLLRegisterServer。
确保“MyDll.dll是有效的DLL或OCX文件,然后重试。
显然,我的第一次尝试有点天真。有人可以提供指导吗?
答案 0 :(得分:10)
步骤#6错了。带有[ComVisible]类型的.NET程序集已在Regasm.exe中注册。如果您不想将DLL安装到GAC中,请使用/ codebase命令行选项。 / tlb命令行选项创建类型库,您可以在VB6项目中使用它。
答案 1 :(得分:3)
您需要为接口定义GUID,并标记要启动哪些类实现哪些接口。 MSDN有一个getting started guide。您不需要运行RegSvr32,但是您需要将DLL放在where the app can find it的某个位置:
使用Regasm.exe注册程序集后,可以将其安装在全局程序集缓存中,以便可以从任何COM客户端激活它。如果程序集仅由单个应用程序激活,则可以将其放在该应用程序的目录中。
对整个过程here也有很好的概述。
答案 2 :(得分:0)
我相当肯定RegSvr32只适用于非.NET DLL。 .NET程序集存储在全局程序集缓存(GAC)中。您必须运行gacutil.exe。
答案 3 :(得分:0)
使用GacUtil而不是RegSvr32。 RegSvr用于使用VB6制作的dll,对于.NET DLL,您需要使用GacUtil,因为它被添加到全局程序集缓存中。