ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

易语言DLL与C#.net互操作

2022-04-01 22:33:53  阅读:253  来源: 互联网

标签:调用 公开 C# 互操作 DLL net NET 易语言


易语言DLL与C#.net互操作

本文演示了如何用易语言调用C#.NET编写的DLL,以及用C#调用易语言DLL并输出类。

易语言调用 C# 编写的 .NET 类库

办法是:将C#编写的类库注册为Com组件,然后使用易语言调用。
VS新建一个C# .net类库工程。修改项目属性:
1.勾选 生成 -> 为 COM 互操作注册 复选框
2.勾选 应用程序 -> 程序级信息 -> 使程序集 COM 可见 复选框
编写类库代码并生成DLL
由于这是.net类库,必须注册com组件后才可被易语言调用,要用到"regasm.exe"工具来注册。
regasm.exe通常在 ""C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"
注册方法:打开CMD输入"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /c "DLL所在路径"
例如: "C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /c "d:\testcom\edemo\mycom.dll"
卸载注册的组件:只需把参数"/c"改为 "/u" 即可,例如:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" /u "d:\testcom\edemo\mycom.dll"
注:需要在公开的类前声明 [ClassInterface(ClassInterfaceType.None)] 特性。

C# 调用易语言编写的Win32DLL及易语言DLL公开类

如果想要易语言公开类中的公开方法被从DLL中输出,必须设置以下选项:
1.在易语言点选"程序->配置->其它->在编译DLL时允许输出被公开类中的公开方法"选项;
2.选中所处类的"公开"属性;
3.选中类方法的"公开"属性。
注意: 所公开方法在所编译DLL中的输出名称被设置为"_所处类名"+"_方法名"格式,譬如公开矩形类中的公开计算面积方法被输出后的名称即为"_rectangle_CalculateArea"
4.在 C# 中调用类公开方法,必须首先在C#中声明一个同DLL中所输出类具有完全相同数据成员和方法的类。
5.在 C# 中声明公开类方法时,公开的类方法第一个参数固定为对象自身的指针值,在调用时使用 this 关键字获得对象自身,后续参数必须与DLL公开类的内部方法中定义的参数顺序及类型完全保持一致。
C#调用Win32DLL,必须引用 System.Runtime.InteropServices名称空间。

示例代码下载地址:
http://file.yiyuen.com/file/download/245873

标签:调用,公开,C#,互操作,DLL,net,NET,易语言
来源: https://www.cnblogs.com/netlog/p/16089473.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有