c#基础知识4:dll相关
2012-10-24 11:32
246 查看
dll,动态链接库。
这里区分两个概念,
一个是传统的动态链接库,也是我们所熟知的,如system32下的kerneral.dll,user32.dll,这种dll由c或者c++写的dll编译出来已经是机器码的二进制文件,里面提供一些封装好的函数接口等。这种dll基本上各种语言都能调用。
而c#里又引入了一种dll,这种dll就是一个类库,可以在vs中创建
这种dll虽然编译出来也是二进制的,不过是c#的中间码格式,不同于传统的dll。只能供c#使用,仅仅是一个类库。
c#里调用第二种dll不用说了,非常简单,拷过来代码里就能引入。
这里主要讲c#如何调用第一种传统的dll,譬如windows的api。
声明一个extern函数来托管外部dll中的一个函数。如想要调用win32的msgbox
具体dllImport有哪些属性,可以参看msdn。
http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.dllimportattribute.aspx
声明的函数必须与dll中的函数形参一致,具体的类型对应,可以参考
http://msdn.microsoft.com/zh-cn/library/aa720411(en-us,VS.71).aspx
参考资料:
1、http://developer.51cto.com/art/200908/146253.htm
2、http://www.cnblogs.com/cltsq/articles/1946395.html
3、/article/4995237.html
4、http://webservices.ctocio.com.cn/226/11544726.shtml
这里区分两个概念,
一个是传统的动态链接库,也是我们所熟知的,如system32下的kerneral.dll,user32.dll,这种dll由c或者c++写的dll编译出来已经是机器码的二进制文件,里面提供一些封装好的函数接口等。这种dll基本上各种语言都能调用。
而c#里又引入了一种dll,这种dll就是一个类库,可以在vs中创建
这种dll虽然编译出来也是二进制的,不过是c#的中间码格式,不同于传统的dll。只能供c#使用,仅仅是一个类库。
c#里调用第二种dll不用说了,非常简单,拷过来代码里就能引入。
这里主要讲c#如何调用第一种传统的dll,譬如windows的api。
声明一个extern函数来托管外部dll中的一个函数。如想要调用win32的msgbox
/* * Author: Shu * E_mail: shushenghong@gmail.com * Time: 10/24/2012 10:19:48 AM */ using System; using System.Runtime.InteropServices; /// <summary> /// win32的alert /// </summary> public class Alert { [DllImport("user32.dll", EntryPoint = "MessageBox", CharSet = CharSet.Unicode)] private static extern int DllMsgBox(int hwnd, string content, string title, uint type); /// <summary> /// win32的消息框 /// </summary> public static void MsgBox(string content, string title) { DllMsgBox(0, content, title, 64); } }
具体dllImport有哪些属性,可以参看msdn。
http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.dllimportattribute.aspx
声明的函数必须与dll中的函数形参一致,具体的类型对应,可以参考
http://msdn.microsoft.com/zh-cn/library/aa720411(en-us,VS.71).aspx
参考资料:
1、http://developer.51cto.com/art/200908/146253.htm
2、http://www.cnblogs.com/cltsq/articles/1946395.html
3、/article/4995237.html
4、http://webservices.ctocio.com.cn/226/11544726.shtml
相关文章推荐
- 在.Net平台实现嵌入DLL C#相关实例描述知识讲解
- C#基础,面向对象OOP及OOD的相关知识
- C#基础知识(一)——相关概念与书写规则
- 【转】[C# 基础知识系列]专题十一:匿名方法解析
- C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问
- C#基础知识之List的使用
- TensorFlow入门基础知识(二)TensorBoard可视化助手相关函数
- C#基础知识整理:基础知识(4) 继承
- C#基础知识整理:基础知识(13) 异常
- 编码相关1 基础知识
- [java相关]Java基础知识——JNI入门介绍(下)
- C#打印相关知识
- 【搜索引擎基础知识3】搜索引擎相关开源项目及网站
- SAR成像基础知识急救箱(一)卷积 相关 滤波器那些事儿
- 【C#基础知识】——File(文件操作)Path类
- js-ajax相关基础知识整理
- Java学习之ACM相关基础知识
- C#基础知识
- C#基础知识系列一(goto、i++、三元运算符、ref和out、String和string、重载运算符)
- JAVA相关基础知识