繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> C#语言 >> C#使用技巧--调用DLL

C#使用技巧--调用DLL

2004-10-01 08:26:10  作者:  来源:互联网  浏览次数:29  文字大小:【】【】【
简介:使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL, C#调用DLL很像VB,下面讨论的C#调用DLL的方式。 看看下面的例子,演示了怎么定义DLL函数接口 public class Utility {    [Dll...
关键字:C# 使用技巧 DLL

使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL,

C#调用DLL很像VB,下面讨论的C#调用DLL的方式。

看看下面的例子,演示了怎么定义DLL函数接口

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

}

}

值得注意的是,缺省的调用规则(CallingConvention)是Stdcall,同Winapi,在

C++里是__stdcall的形式,函数入口(EntryPoint)缺省是同名,如CreateDirectory

的定义也可以为

[DllImport("kernel32")]

static extern bool CreateDirectory(string name, SecurityAttributes sa);

WIN32 API原型为

BOOL CreateDirectory(

LPCTSTR lpPathName, // directory name

LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD

);

在调用WIN32 API时注意那些类型的转换,如结构(struct)、指针(pointer),

有关各种语言之间类型转换和DllImport属性的详细信息可以参考S

责任编辑:admin
相关文章