dll,動態鏈接庫。
這裡區分兩個概念,
一個是傳統的動態鏈接庫,也是我們所熟知的,如system32下的kerneral.dll,user32.dll,這種dll由c或者c++寫的dll編譯出來已經是機器碼的二進制文件,裡面提供一些封裝好的函數接口等。這種dll基本上各種語言都能調用。
而c#裡又引入了一種dll,這種dll就是一個類庫,可以在vs中創建
這種dll雖然編譯出來也是二進制的,不過是c#的中間碼格式,不同於傳統的dll。只能供c#使用,僅僅是一個類庫。
c#裡調用第二種dll不用說了,非常簡單,拷過來代碼裡就能引入。
這裡主要講c#如何調用第一種傳統的dll,譬如windows的api。
聲明一個extern函數來托管外部dll中的一個函數。如想要調用win32的msgbox
[csharp]
/*
* Author: Shu
* E_mail: [email protected]
* Time: 10/24/2012 10:19:48 AM
*/
using System;
using System.Runtime.InteropServices;
/// <summary>
/// win32的alert
/// </summary>
public class Alert
{
[DllImport("user32.dll", EntryPoint = "MessageBox", CharSet = CharSet.Unicode)]
private static extern int DllMsgBox(int hwnd, string content, string title, uint type);
/// <summary>
/// win32的消息框
/// </summary>
public static void MsgBox(string content, string title)
{
DllMsgBox(0, content, title, 64);
}
}