C#使用技巧--调用DLL(还是转贴哦!)
2006-12-05 04:33
507 查看
使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL,
C#调用DLL很像VB,下面讨论的C#调用DLL的方式。
看看下面的例子,演示了怎么定义DLL函数接口
---------------------
using System;
using System.Runtime.InteropServices;
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
------------------------------------------------
转贴者的话:
1、这个实例,我csc了,执行时报错!我不知道原因!有人知道了,给我指点一下!不胜感激哦!^_^!
2、不是我不想转完,只是没有办法,人家的文章就到此为止了!!^_^!
不过至少为我了解调用DLLImport的一点内容,只是我也感到可惜的是:“DllImport属性的详细信息可以参考S”,居然没有了?NND,说句粗话!我其实也很想知道后面到底说了什么?????晕!
C#调用DLL很像VB,下面讨论的C#调用DLL的方式。
看看下面的例子,演示了怎么定义DLL函数接口
---------------------
using System;
using System.Runtime.InteropServices;
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
------------------------------------------------
转贴者的话:
1、这个实例,我csc了,执行时报错!我不知道原因!有人知道了,给我指点一下!不胜感激哦!^_^!
2、不是我不想转完,只是没有办法,人家的文章就到此为止了!!^_^!
不过至少为我了解调用DLLImport的一点内容,只是我也感到可惜的是:“DllImport属性的详细信息可以参考S”,居然没有了?NND,说句粗话!我其实也很想知道后面到底说了什么?????晕!
相关文章推荐
- C#使用技巧--调用DLL
- C#使用技巧--调用DLL
- C#使用技巧--调用DLL
- C#使用技巧--调用DLL(vc写的dll)
- 在VS2010上使用C#调用非托管C++生成opencv代码的DLL文件
- [转]使用C#调用金诚信71x系列读卡器的DLL
- 使用C#调用金诚信71x系列读卡器的DLL
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- c#中使用相对路径调用c++的dll
- 使用c#创建php可以调用的dll
- C#中使用DllImport调用C++dll
- C#使用技巧之调用JS脚本方法二
- C#使用技巧之调用JS脚本(转)
- C#中使用OpenGL:(二)C#调用C/C++的dll
- C#调用MySQL数据库(使用MySql.Data.dll连接)mysql-connector-net-6.10.4.msi
- C#使用CLR/C++的DLL间接调用Native C++的DLL
- PB调用SAP的Web Service结构体数组参数方法详解(使用C#调用Web Service生成dll)
- C#调用C++DLL 使用 德卡 读卡器 获取身份证信息
- C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度
- C#使用技巧之调用JS脚本方法一