C# 调用易语言写的DLL文件有两种方式:使用DllImport特性和使用COM组件。下面详细讲解这两种方法的完整攻略。
DllImport
编写易语言DLL
- 在易语言中编写函数代码。
- 在函数顶部添加
#dllexport
命令。 - 在函数返回值的数据类型前加上
#stdcall
命令。 - 将函数编译为DLL文件。
以下为示例代码,函数名称为 Add
,返回类型为 int
,参数为两个 int
型数字:
#dllexport
#stdcall
int Add(int a, int b) {
return a + b;
}
将代码保存为 AddDll.ex
文件,编译为DLL文件。
使用DllImport调用DLL
- 在C#代码中声明DLL函数的原型。
- 使用DllImport特性导入DLL文件。
- 调用DLL函数。
以下为示例代码:
using System.Runtime.InteropServices;
class Program
{
[DllImport(@"AddDll.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int Add(int a, int b);
static void Main(string[] args)
{
int a = 1, b = 2;
int sum = Add(a, b);
Console.WriteLine("{0} + {1} = {2}", a, b, sum);
}
}
在代码中,我们声明了函数原型 Add
,并使用DllImport特性导入了DLL文件 AddDll.dll
。在Main方法中,我们调用了 Add
函数,并输出结果。运行代码可以得到以下输出:
1 + 2 = 3
COM组件
编写易语言COM组件
- 在易语言中编写COM组件代码。
- 在COM组件的创建函数顶部添加
#use COM
命令。 - 实现COM组件的接口函数。
- 编译为COM组件。
以下为示例代码,创建一个名为 Add
的COM组件,实现 IAdd
接口:
#use COM
interface IAdd {
int Add(int a, int b);
}
class Add implements IAdd {
public int Add(int a, int b) {
return a + b;
}
}
将代码保存为 AddCom.e
文件,编译为COM组件。
使用COM组件
- 在C#代码中创建COM组件对象。
- 调用COM组件接口函数。
以下为示例代码:
Type type = Type.GetTypeFromProgID("AddCom.Add");
Object add = Activator.CreateInstance(type);
int a = 1, b = 2;
int sum = (int)type.InvokeMember("Add", BindingFlags.InvokeMethod, null, add, new object[] { a, b });
Console.WriteLine("{0} + {1} = {2}", a, b, sum);
在代码中,我们使用 Type.GetTypeFromProgID
获取COM组件的类型,然后使用 Activator.CreateInstance
创建COM组件对象。通过 InvokeMember
调用了 Add
函数,并输出结果。运行代码可以得到以下输出:
1 + 2 = 3
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#调用易语言写的Dll文件方法 - Python技术站