易语言调用C#编写的COM-DLL

VS-2015操作步骤:

1.打开VS2015,文件->新建->项目(test),弹出对话框选“类库”。
2.新建好的类库下有一个默认的类Class1,我们删除这个默认的类库,不是必须的。
3.往类库中添加新类--ClassMath
4.在test上,右键,选择属性--生成--为COM互操作注册。
5.在 AssemblyInfo.cs中把 false改为:

  1. [assembly: ComVisible(true)]

6.在classMath.cs中编写代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
 
namespace test
{
    public interface IClassMath
 
    {
        int add(int a, int b);
        int sub (int a, int b);
    }
    [ClassInterface(ClassInterfaceType.None)]
 
    public class ClassMath : IClassMath
    {
        public int add(int a, int b)
        {
           return a+b;
        }
       public int sub(int a, int b)
        {
           return a-b;
        }
    }
  }

4.解决方案资源管理器中点右键,选“生成”,然后在你的Debug/Bin目录就能看到生成的dll文件了。

易语言调用步骤:

这里有两种方式,为了能静态调用,我们采用对象,类模块的方式
类模块源码:

.版本 2
 
.程序集 类_C, , 公开
.程序集变量 obj, 对象
 
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
obj.创建 (“test.ClassMath, “test.dll)
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
.子程序 add, 整数型, 公开
.参数 a, 整数型
.参数 b, 整数型
 
返回 (obj.数值方法 (“add”, a, b))
.版本 2
 
.程序集 窗口程序集_启动窗口
.程序集变量 a, 类_C
.子程序 _按钮_add_被单击
 
编辑框3.内容 = 到文本 (a.add (到整数 (编辑框1.内容), 到整数 (编辑框2.内容)))
.子程序 _按钮_sub_被单击
编辑框6.内容 = 到文本 (a.sub (到整数 (编辑框4.内容), 到整数 (编辑框5.内容)))

说明:

1、C#编写的COM DLL是基于NET Framework框架,换环境使用,必须注册
2、注册文件模板:

  1. set p=test
  2. set w=C:\windows\
  3. copy %p%.dll %w%%p%.dll
  4. C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe %w%%p%.dll /tlb:%w%%p%.tlb /codebase
  5. pause

即使注册,也是使用了Framework下的RegAsm.exe 所以,必须有NET Framework框架
3、建议使用C,C++来编写DLL。


发布日期:

所属分类: 易语言 标签: