日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 调用 Delphi Dll链接库方法及示例

發布時間:2023/12/9 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 调用 Delphi Dll链接库方法及示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每種編程語言調用DLL的方法都不盡相同,在此只對用C#調用Delphi DLL的方法進行介紹

首先要搞清楚一點的是:什么是托管,什么是非托管?

一般可以認為:非托管代碼主要是基于win 32平臺開發的DLL,activeX的組件,托管代碼是基于.net平臺開發的

C# 調用DLL中的非托管函數一般方法

首先,應該在C#語言源程序中聲明外部方法,其基本形式是:

[DLLImport(“DLL文件”)]

修飾符 extern 返回變量類型 方法名稱 (參數列表)

其中:

DLL文件:包含定義外部方法的庫文件。

修飾符: 訪問修飾符,除了abstract以外在聲明方法時可以使用的修飾符。

返回變量類型:在DLL文件中你需調用方法的返回變量類型。

方法名稱:在DLL文件中你需調用方法的名稱。

參數列表:在DLL文件中你需調用方法的列表。

注意:需要在程序聲明中使用System.Runtime.InteropServices命名空間。

????? DllImport只能放置在方法聲明上。

DLL文件必須位于程序當前目錄或系統定義的查詢路徑中(即:系統環境變量中Path所設置的路徑)。

返回變量類型、方法名稱、參數列表一定要與DLL文件中的定義相一致。

下面結合示例如:

??????? [DllImport("TestDll.dll", EntryPoint = "SayHello")]??????"TestDll.dll"為dll名稱,EntryPoint 為函數名
??????? static extern string SayHello(string Name);????????????? //delphi 中的函數
??????? private string GetMessage()????????????????????????????????? //C#自己寫的函數,并調用Dll函數
??????? {
??????????? return SayHello("");
??????? }

?  當前程序中調用 GetMessage時就會返回Dll SayHello 函數的內容

  其中,Dll SayHello函數如下(Delphi語言):

 function SayHello(NameTool:PChar):PChar;stdcall;
? begin
??? if Length(NameTool) <=0 then
????? Result := PChar('Hello Person,welcome to chian.')
??? else
????? Result := PChar('Hello '+ NameTool + ', welcome to chian.');
? end;

另外,如果需要調用傳值,的方法時,通過Delphi的參數 var 與C#中的ref關鍵字結合使用如:

procedure ChangeNumber(var number:Integer);stdcall;
? begin
??? number := 100;
? end;

C#調用如下:

private int MyNumber = 150;

[DllImport("TestDll.dll", EntryPoint = "ChangeNumber")]
?static extern void ChangeNumber(ref int count);
?private void Changes()
?{
?????ChangeNumber(ref MyNumber);
?}

當C#程序中調用? Changes方法后,MyNumber的值將會改變為100

以上為C#簡單調用Delphi Dll的方法。其中要注意的有:

DLL文件必須位于程序當前目錄或系統定義的查詢路徑中(即:系統環境變量中Path所設置的路徑)。

返回變量類型、方法名稱、參數列表一定要與DLL文件中的定義相一致。

?

?

轉載于:https://www.cnblogs.com/youshan/archive/2012/03/31/2426529.html

總結

以上是生活随笔為你收集整理的C# 调用 Delphi Dll链接库方法及示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。