我们用VS2015VB.NET编写的COM-DLL来供易语言调用,采用两种方式调用,特别是类模块的调用方式。
VS2015步骤:
1、新建一个类工程(test)
2、删除默认的类.vb
3、项目-添加类-COM
4、编写类中的代码:
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> Public Class ComClass1 #Region "COM GUID" ' 这些 GUID 提供此类的 COM 标识 ' 及其 COM 接口。若更改它们,则现有的 ' 客户端将不再能访问此类。 Public Const ClassId As String = "2e1a701c-9203-4f11-9871-925276528e02" Public Const InterfaceId As String = "cc911a56-8854-46b0-85cd-52ddac95e4c9" Public Const EventsId As String = "11c493b1-f75b-4b0a-988b-4913053c993c" #End Region ' 可创建的 COM 类必须具有一个不带参数的 Public Sub New() ' 否则, 将不会在 ' COM 注册表中注册此类,且无法通过 ' CreateObject 创建此类。 Public Function myadd(ByVal a As Short, ByVal b As Short) As Short myadd= a + b End Function End Class
注册到系统
新建一个bat文件:
set p=test set w=C:\windows\ copy %p%.dll %w%%p%.dll<strong class="text-danger"> xxx </strong> C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe %w%%p%.dll /tlb:%w%%p%.tlb /codebase pause
注意:
1、必须使用RegAsm(NET Framework 工具)
组件登录工具 (Regasm.exe)
组件注册工具可以读取组件内的中继资料 (Metadata),并加入必要的项目至登录中,可允许 COM 用户端无障碍地建立 .NET Framework 类别。一旦注册类别之後,任何 COM 用户端都可以使用它,如同它是 COM 类别。当安装组件时,只会注册类别一次。在实际注册类别之後,才能从 COM 建立组件内类别的执行个体。
2、后面必须加 codebase
注册的.net程序集没有强名称,则在用regasm注册的时候须指定参数 CodeBase.
3、和test.dll放到同一个目录
易语言调用
1、工具-类型库或OCX组件-支持库
2、注册类型库!!!不是注册组件!!
3、找到Windows下的test.tlb
4、下一步,保存
5、重启易语言,工具-支持库配置选中刚才的类库
6、声明变量-选择类
7、调用方法。
注意:
1、在vbnet中
Public Function myadd(ByVal a As Short, ByVal b As Short) As Short myadd= a + b End Function
把数据类型换成 Short不要使用 Long
2、编译时,系统中必须安装microsoft .net framework
类模块方式调用
1、使用对象创建调用方法
2、易语言类模块
.版本 2 .程序集 类_vbnet, , 公开 .程序集变量 obj, 对象 .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 obj.创建 (“test.ComClass1”, “test.dll”) .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用