实例003 创建DLL动态链接库
【实例描述】
本实例介绍了DLL动态链接库程序的创建及调用方法。DLL是Dynamic Link Library 的缩写,意为动态链接库。动态链接库其实是由编译器将一系列相关的类型编译、链接并封装成一个独立的文件,与对其进行调用的程序分开。这样一个独立的文件相当于程序的一个模块,如果需要对程序进行更新,只需更新指定的模块而不影响程序的其他部分。本实例编写了一个简单的 DLL 文件,并在窗体应用程序中对其进行调用,效果如图1-11所示。
图1-11 显示hello world信息窗口
【实现过程】
(1)在Create解决方案中添加一个新项目,在弹出的“添加新项目”窗口左边的“已安装的模板”列表中选择“Visual C#”选项,在中间的项目类型列表中选择“类库”选项,将名称栏中的项目名称改为 ClassLibrary,将位置栏中的项目路径改为V:\300-classic-examples\Foundation\Create,最后单击右下角的“确定”按钮,如图1-12所示。
图1-12 为解决方案添加动态链接库项目
(2)在ClassLibrary项目创建完成后,系统会自动生成一个名为Class1的类,在“解决方案资源管理器”中的ClassLibrary项目下面的Class1.cs选项上单击鼠标右键,在弹出的菜单中选择“重命名”菜单项,这时将Class.cs文件改名为MyClass.cs,然后单击键盘上的Enter按钮,这时系统会弹出一个对话框,如图1-13所示,提示是否需要将Class1改名为MyClass,单击“是”按钮,将Class1改名为MyClass。
图1-13 将Class1重命名为MyClass
(3)在项目列表中双击MyClass.cs选项,显示MyClass.cs中的代码,并在MyClass类中添加显示hello world的代码如下:
namespace ClassLibrary //定义ClassLibrary命名空间 { public class MyClass //定义MyClass类
{ public void HelloWorld() //HelloWorld函数 { System.Windows.Forms.MessageBox.Show("hello world");//弹出消息对话框 } } }
(4)为 WindowsFormsApplication 项目添加对 ClassLibrary 项目所创建的类库的引用。在WindowsFormsApplication项目的引用选项下单击鼠标右键,在弹出的菜单中选择“添加引用...”菜单项,如图1-14所示。
图1-14 为WindowsFormsApplication添加引用
(5)在弹出的“添加引用”窗口中选择“浏览”选项卡,在查找范围下拉列表框中选择ClassLibrary项目所生成的DLL文件ClassLibrary.dll路径,该文件位于V:\300-classic-examples\Foundation\Create\ClassLibrary\bin\Debug目录下。选择好DLL文件后单击右下角的“确定”按钮,如图1-15所示。
图1-15 添加ClassLibrary.dll文件的引用
(6)在WindowsFormsApplication项目的From1.cs文件下Form1类的构造函数中添加代码如下:
public Form1() //Form1窗体构造函数 { InitializeComponent(); //窗体初始化函数 MyClass myClass = new MyClass(); //实例化MyClass类 myClass.HelloWorld(); //调用MyClass类的HelloWorld方法 }
【代码解析】
本实例代码主要实现了 DLL 动态链接库的编写以及在窗体应用程序中调用该动态链接库中的 MyClass 类。在实例代码中,首先为 ClassLibrary 项目中的 MyClass 添加了一个名为HelloWorld 的方法,该方法实现了在弹出的信息窗口上显示 hello world 的功能。然后为WindowsFormsApplication 项目添加 ClassLibrary 项目所生成的动态链接库文件 ClassLibrary.dll的引用,这样在WindowsFormsApplication项目中就可以实现对MyClass的调用。在Form1的构造函数中首先创建了MyClass对象,然后调用了该对象的HelloWorld方法,所在窗体构造的时候会弹出一个显示hello world的信息窗口。
说明:其实,在项目创建完成后,VS平台会自动为相应的程序引用.NET框架下的DLL,例如,控制台应用程序所使用的System命名空间就来自对System.dll的引用,窗体应用程序中的Form类就来自对System.Windows.Forms.dll的引用。