C#使用技巧--调用DLL - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- C#使用技巧--调用DLL (http://www.webasp.net/article/6/5590.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-12 |
| 使用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文档 |
| webasp.net |