VB调用C# DLL:COM接口实现步骤

需积分: 10 2 下载量 158 浏览量 更新于2024-09-13 收藏 228KB PDF 举报
"这篇内容讲述了如何使用VB调用C#编写的DLL动态链接库。C#生成的DLL基于.NET框架的MSIL中间语言,通常不直接支持非.NET环境的语言如VB、VC或Delphi调用。但是,通过.NET框架提供的COM互操作功能,可以将C#的DLL包装为一个COM对象,从而让VB等原生语言能够调用其功能。以下是详细的步骤: 1. 创建C# DLL - 首先,在.NET环境中创建一个新的C#项目,命名为`TestCom`。 - 在`Class1.cs`文件中定义一个接口`iClass1`和一个实现了该接口的类`Class1`。在接口和类上分别添加`[ComVisible(true)]`属性,使它们对COM可见。 - 类`Class1`中的`test()`方法返回字符串"ok"作为示例功能。 - 使用Visual Studio的命令提示符工具,通过`sn.exe`生成强名称密钥文件`myKey.snk`,然后在项目属性中设置签名,引用这个密钥文件,确保DLL有强名称。 2. 生成和注册类型库(TLB) - 使用`tlbexp.exe`工具,将C#生成的DLL转换为类型库(TLB)文件。在命令行中输入`tlbexp TestCom.dll /out:TestCom.tlb`,这将生成一个名为`TestCom.tlb`的类型库文件。 - 接下来,使用`regasm.exe`工具注册DLL,并指定TLB文件。命令为`regasm TestCom.dll /tlb:TestCom.tlb /codebase`,这会将DLL注册到系统COM组件注册表中,使得其他程序可以通过COM接口访问它。 3. 在VB中调用C# DLL - 在VB环境中,可以通过引用生成的`TestCom.tlb`类型库来访问C#的类和方法。这样,VB就可以像使用本地COM对象一样调用C#的`Class1`类的`test()`方法。 通过以上步骤,VB就可以无缝地调用C#编写的DLL,充分利用.NET框架的功能,同时保持与其他原生Windows应用程序的兼容性。这种方式称为.NET与非.NET之间的互操作性,是.NET Framework的一个强大特性。"