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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

C#使用DLLImport調(diào)用外部DLL的方法_C#教程

作者:農(nóng)碼一生 ? 更新時(shí)間: 2022-06-23 編程語(yǔ)言

C#.Net調(diào)用基本格式:

DllImport 屬性提供非托管 DLL 函數(shù)的調(diào)用信息。

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

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);

調(diào)用DLL中的非托管函數(shù)一般方法

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

其中:

DLL文件:包含定義外部方法的庫(kù)文件。

  • 修飾符: 訪問(wèn)修飾符,除了abstract以外在聲明方法時(shí)可以使用的修飾符。

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

  • 方法名稱:在DLL文件中你需調(diào)用方法的名稱。

  • 參數(shù)列表:在DLL文件中你需調(diào)用方法的列表。

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

其它可選的 DllImportAttribute 屬性:

  • EntryPoint :指定要調(diào)用的 DLL 入口點(diǎn)。

  • SetLastError :判斷在執(zhí)行該方法時(shí)是否出錯(cuò)(使用 Marshal.GetLastWin32Error API 函數(shù)來(lái)確定)。
    C#中默認(rèn)值為 false。

  • CharSet :控制名稱及函數(shù)中字符串參數(shù)的編碼方式。默認(rèn)值為 CharSet.Ansi。

  • ExactSpelling:是否修改入口點(diǎn)以對(duì)應(yīng)不同的字符編碼方式。

  • CallingConvention:指定用于傳遞方法參數(shù)的調(diào)用約定。默認(rèn)值為 WinAPI。該值對(duì)應(yīng)于基于32位Intel平臺(tái)的 __stdcall。

  • BestFitMapping :是否啟用最佳映射功能,默認(rèn)為 true。 最佳映射功能提供在沒(méi)有匹配項(xiàng)時(shí),自動(dòng)提供匹配的字符。 無(wú)法映射的字符通常轉(zhuǎn)換為默認(rèn)的“?”。

  • PreserveSig:托管方法簽名是否轉(zhuǎn)換成返回 HRESULT,默認(rèn)值為 true(不應(yīng)轉(zhuǎn)換簽名)。并且返回值有一個(gè)附加的 [out, retval] 參數(shù)的非托管簽名。

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

欄目分類
最近更新