VB调用C# DLL:实现步骤与方法

4星 · 超过85%的资源 需积分: 10 80 下载量 179 浏览量 更新于2024-09-15 收藏 228KB PDF 举报
本文档主要介绍了如何在VB(Visual Basic)环境中调用C#(C Sharp)编写的.NET平台上的DLL(动态链接库)。尽管C#编写的.NET DLL通常是面向.NET框架设计的,不能直接被非.NET语言如VB或VC等调用,但可以通过COM(Component Object Model)技术间接实现跨语言调用。 首先,创建一个名为TestCom的C#项目,该项目包含一个接口iClass1和一个实现了该接口的Class1类,同时使用[ComVisible]属性标记它们为COM可见,以便于被其他语言识别。Class1类中的test方法返回字符串"ok"。为了保证程序的安全性和完整性,生成签名文件myKey.snk,并在项目属性中设置为程序集签名。 1.1 静态编译C# DLL 在Visual Studio的命令提示符下,新建并编译项目,生成的TestCom.dll文件存放在\Debug目录下,完成了C# DLL的编写。 接下来,要将C#的.NET DLL转换为COM兼容的形式,以便VB等非.NET语言能调用: 2.1 生成TLB类型库 使用tlbexp工具,将C# DLL导出为类型库(TLB),命令行输入`tlbexp TestCom.dll /out:TestCom.tlb`,这会生成一个TestCom.tlb文件,其中包含了DLL的COM接口描述。 2.2 注册类型库 使用regasm工具,注册刚才生成的TLB文件,命令行输入`regasm TestCom.dll /tlb:TestCom.tlb /codebase`。这一步骤使TestCom.tlb成为系统注册的COM类型库,使得VB等语言能够识别并引用。 现在,VB程序可以通过以下步骤调用C# DLL: - 在VB中声明对TestCom.tlb的引用,让编译器知道有可用的COM接口。 - 使用CreateObject或早期版本的CreateTypeObject函数,通过TestCom.tlb提供的接口实例化Class1对象。 - 调用Class1对象的方法,如`Dim c As New TestCom.Class1()`, `Dim result As String = c.test()`。 总结来说,本文介绍了如何通过.NET平台的COM技术,让VB能够调用C#编写的DLL,确保了不同.NET语言之间的交互性。这种技术对于需要跨语言集成的开发者来说非常实用,可以大大提高开发效率和代码重用性。