使用C#時(shí)不免用調(diào)用別的DLL,如WIN32的API和自己以前做的DLL,
C#調(diào)用DLL很像VB,下面討論的C#調(diào)用DLL的方式。
看看下面的例子,演示了怎么定義DLL函數(shù)接口
public class Utility
{
[DllImport("kernel32",
EntryPoint=”CreateDirectory”,
CallingConvention=CallingConvention.StdCall]
public static extern bool Create (string name);
[DllImport("User32"]
EntryPoint=”MessageBox”,
CallingConvention=CallingConvention.StdCall]
public static extern int MsgBox (string msg);
}
class MyClass
{
public static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return Utility.MsgBox(myString);
}
}
值得注意的是,缺省的調(diào)用規(guī)則(CallingConvention)是Stdcall,同Winapi,在
C++里是__stdcall的形式,函數(shù)入口(EntryPoint)缺省是同名,如CreateDirectory
的定義也可以為
[DllImport("kernel32")]
static extern bool CreateDirectory(string name, SecurityAttributes sa);
WIN32 API原型為
BOOL CreateDirectory(
LPCTSTR lpPathName, // directory name
LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD
);
在調(diào)用WIN32 API時(shí)注意那些類型的轉(zhuǎn)換,如結(jié)構(gòu)(struct)、指針(pointer),
有關(guān)各種語(yǔ)言之間類型轉(zhuǎn)換和DllImport屬性的詳細(xì)信息可以參考SDK文檔
C#調(diào)用DLL很像VB,下面討論的C#調(diào)用DLL的方式。
看看下面的例子,演示了怎么定義DLL函數(shù)接口
public class Utility
{
[DllImport("kernel32",
EntryPoint=”CreateDirectory”,
CallingConvention=CallingConvention.StdCall]
public static extern bool Create (string name);
[DllImport("User32"]
EntryPoint=”MessageBox”,
CallingConvention=CallingConvention.StdCall]
public static extern int MsgBox (string msg);
}
class MyClass
{
public static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return Utility.MsgBox(myString);
}
}
值得注意的是,缺省的調(diào)用規(guī)則(CallingConvention)是Stdcall,同Winapi,在
C++里是__stdcall的形式,函數(shù)入口(EntryPoint)缺省是同名,如CreateDirectory
的定義也可以為
[DllImport("kernel32")]
static extern bool CreateDirectory(string name, SecurityAttributes sa);
WIN32 API原型為
BOOL CreateDirectory(
LPCTSTR lpPathName, // directory name
LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD
);
在調(diào)用WIN32 API時(shí)注意那些類型的轉(zhuǎn)換,如結(jié)構(gòu)(struct)、指針(pointer),
有關(guān)各種語(yǔ)言之間類型轉(zhuǎn)換和DllImport屬性的詳細(xì)信息可以參考SDK文檔