2024年4月8日发(作者:)
VB6.0调用C# Dll解决方法
在工作中遇到了在VB6.0的程序里要调用C#的Dll的问题,显然这两个开
发环境属于不同的平台。在网上拜读了几位大师的文章后,在实际试验中还是会
发生这样那样的问题,最后还是实现了预期效果,在此我把我的实验步骤和注意
事项分享如下,希望对需要之人有所帮助:
实验环境:
C#dll的创建使用的是VS2010;VB6.0
一、C#部分
1.用C#创建一个TestVB项目(VS2010);
2.所有在VB6中要使用的方法都必须通过继承接口实现,并且为public的(非
常重要,没有继承接口实现的方法,在VB6.0里面无法调用);
3.接口和类都需要加入属性Guid;
Guid通过VS2010自带的工具得到:
4.在VS2010的DOS命令工具提示框中运行:
sn -k C:<回车>
在C盘根目录下生成一个强名称文件:(注意这个强名称文件的名字
可以自己定义,我暂定为)
5. 右击项目,选择属性,打开并编辑项目的属性对话框
在Application tab中,点击Assembly Information按钮,在打开的对话框中
选中“make Assembly COM-Visible”(重要)
在Build Tab中,最好用Release模式编译,确认选中“Make assembly
COM-Visible”(重要)。
在Signing Tab中引入上一步创建的强名称文件
6. 检查项目的AssemblyInfo文件,ComVisible应设为true,项目和文件版本
不为1.0.*,应该是一个具体的值;
7.编译这个项目,生成dll文件。
到此为止,C#的Dll部分已经准备完毕了。
二、VB6部分
1. VB6调用环境必须安装.Net framework 4.0或以上版本,最好是4.0(和VS2010
相同的framework);
2. 复制dll文件进入VB6环境的目标文件夹,例如D:根目录, D:
3. 在Dos命令窗口用regasm命令注册这个dll文件生成.tlb文件
regasm D: /tlb:D: /codebase
在D:将会生成一个文件
4.在Dos命令窗口用gacutil命令添加Dll文件到GAC中(全局程序集缓存),
这样这个Dll文件在这个PC中就可以随处使用
gacutil /I D:
5.在VB6项目中,把生成的.tlb文件加入到项目(References)
6. VB6代码即可调用tlb文件
Private Sub Command1_Click()
Dim a As New
n = t("aa", "bb")
End Sub
注意:以上3,4步,需要在VB6环境的C:WINDOWSsystem32下面有相应的exe
文件才可运行;第4步,可以省去;
还要说明的是,当转移这个VB6生成的exe程序(这个VB6可执行文件引用了
C#的dll)到另外一台电脑上的时候,需要把这个C# Dll文件一同Copy到那台
电脑上,并且重新执行第3步的注册生成tlb文件的工作,否则这个exe程序无
法运行。


发布评论