日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#使用DLLImport調用外部DLL的方法_C#教程

作者:農碼一生 ? 更新時間: 2022-06-23 編程語言

C#.Net調用基本格式:

DllImport 屬性提供非托管 DLL 函數的調用信息。

[DLLImport(“DLL文件路徑”)]
修飾符 extern 返回值類型 方法名稱(參數列表) 如:

using System.Runtime.InteropServices;
[DllImport(  "KERNEL32.DLL", 
             EntryPoint="MoveFileW", 
             SetLastError=true, 
             CharSet=CharSet.Unicode, 
             ExactSpelling=true, 
             CallingConvention=CallingConvention.StdCall
          )
]
public static extern bool MoveFile(String src, String dst);

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

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

其中:

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

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

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

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

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

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

其它可選的 DllImportAttribute 屬性:

  • EntryPoint :指定要調用的 DLL 入口點。

  • SetLastError :判斷在執行該方法時是否出錯(使用 Marshal.GetLastWin32Error API 函數來確定)。
    C#中默認值為 false。

  • CharSet :控制名稱及函數中字符串參數的編碼方式。默認值為 CharSet.Ansi。

  • ExactSpelling:是否修改入口點以對應不同的字符編碼方式。

  • CallingConvention:指定用于傳遞方法參數的調用約定。默認值為 WinAPI。該值對應于基于32位Intel平臺的 __stdcall。

  • BestFitMapping :是否啟用最佳映射功能,默認為 true。 最佳映射功能提供在沒有匹配項時,自動提供匹配的字符。 無法映射的字符通常轉換為默認的“?”。

  • PreserveSig:托管方法簽名是否轉換成返回 HRESULT,默認值為 true(不應轉換簽名)。并且返回值有一個附加的 [out, retval] 參數的非托管簽名。

原文鏈接:https://www.cnblogs.com/wml-it/p/15666751.html

欄目分類
最近更新