C#使用DLLImport調(diào)用外部DLL的方法
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#語言源程序中聲明外部方法,其基本形式是:
其中:
DLL文件:包含定義外部方法的庫文件。
修飾符: 訪問修飾符,除了abstract以外在聲明方法時可以使用的修飾符。
返回變量類型:在DLL文件中你需調(diào)用方法的返回變量類型。
方法名稱:在DLL文件中你需調(diào)用方法的名稱。
參數(shù)列表:在DLL文件中你需調(diào)用方法的列表。
注意:需要在程序聲明中使用System.Runtime.InteropServices命名空間。
其它可選的 DllImportAttribute 屬性:
EntryPoint :指定要調(diào)用的 DLL 入口點。
SetLastError :判斷在執(zhí)行該方法時是否出錯(使用 Marshal.GetLastWin32Error API 函數(shù)來確定)。
C#中默認值為 false。CharSet :控制名稱及函數(shù)中字符串參數(shù)的編碼方式。默認值為 CharSet.Ansi。
ExactSpelling:是否修改入口點以對應(yīng)不同的字符編碼方式。
CallingConvention:指定用于傳遞方法參數(shù)的調(diào)用約定。默認值為 WinAPI。該值對應(yīng)于基于32位Intel平臺的 __stdcall。
BestFitMapping :是否啟用最佳映射功能,默認為 true。 最佳映射功能提供在沒有匹配項時,自動提供匹配的字符。 無法映射的字符通常轉(zhuǎn)換為默認的“?”。
PreserveSig:托管方法簽名是否轉(zhuǎn)換成返回 HRESULT,默認值為 true(不應(yīng)轉(zhuǎn)換簽名)。并且返回值有一個附加的 [out, retval] 參數(shù)的非托管簽名。
到此這篇關(guān)于C#使用DLLImport調(diào)用外部DLL的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入C#中使用SqlDbType.Xml類型參數(shù)的使用詳解
本篇文章是對在C#中使用SqlDbType.Xml類型參數(shù)的使用進行了詳細的分析介紹,需要的朋友參考下2013-05-05

