1. 程式人生 > 其它 >易語言DLL與C#.net互操作

易語言DLL與C#.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