C#使用技巧 _爱资料
主页 > 编程资料 > C# >
发布时间:2015-09-26 作者:网络 阅读:181次

使用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属性的详细信息可以参考SDK文档 

关键字词: