我有一个用C#编写的简单类库。
using System; namespace TestDll { public class Test { public string HelloWorld { get { return "Hello World"; } } } }
我的问题是如何从Microsoft Office Visual Basic(我认为是VB6)中调用此HelloWorld函数?
我的第一步是添加DLL作为参考-但是在浏览和选择编译的DLL时,显示消息“无法向指定文件添加参考”。被扔了。
谁能为我指出正确的方向,说明为什么/如何使其正常工作?
在此先感谢!
您不能通过COM互操作访问静态成员。实际上,您的代码甚至都没有编译,该方法应该在一个类中。这是您可以执行的操作:
[InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid("01A31113-9353-44cc-A1F4-C6F1210E4B30")] //Allocate your own GUID public interface _Test { string HelloWorld { get; } } [ClassInterface(ClassInterfaceType.None)] [Guid("E2F07CD4-CE73-4102-B35D-119362624C47")] //Allocate your own GUID [ProgId("TestDll.Test")] public class Test : _Test { public string HelloWorld { get { return "Hello, World! "; } } }
在项目属性的“构建”选项卡上,选择“注册COM互操作”。这样您可以快速查看结果。要将dll安装在另一台计算机上,您需要使用regasm。
要消耗掉这个:
Dim o : Set o = CreateObject("TestDll.Test") MsgBox o.HelloWorld
您还可以引用dll并使用早期绑定:
Dim o As TestDll.Test Set o = New TestDll.Text MsgBox o.HelloWorld