1、VS 2005 创建 DLL 工程,并进行调用与调试例子1 例子目标在 Window 下,学会使用 Visual Studio 2005 创建简单的 DLL 工程,以及对 DLL 提供的接口进行调用与调试。2 DLL 工程2.1 创建工程打开 VS2005,并创建工程。如图所示。这里选择“Win32 控制台应用程序”即可。选择工程的位置,以及添加工程的名称“DllTest”,然后按“确定” 。接着,出现“Win32 应用程序向导 ”,按“下一步”即可。然后,出现下面的对话框。这里应用程序类型选择“DLL” ,附加选项选择“空目录”即可。便创建了简单 DLL 工程。其“解决方案”显示框内容如下:
2、这里新创建的 DLL 工程是不包含任何文件的。2.2 DLL 开发在创建了 DLL 工程之后,便可以进行开发。步骤如下:首先,创建头文件 DllTest.h,如图:这一幅图是说明了在工程中添加文件的方式,包括添加头文件和下面的源文件、模块定义文件和资源文件等等。DllTest.h 头文件的内容如下:#ifndef _DLLTEST_H_#define _DLLTEST_H_#ifdef _cplusplusextern “C“#endifint _stdcall example(int value);#ifdef _cplusplus#endif#endif请注意,上面头文件代码中, “#if
3、def _cplusplus”语句定义了该 DLL工程的接口以C的形式提供。另外,接口入口点方式是_stdcall 。第二步,创建源文件DllTest.cpp,实现接口。如图所示:源文件DllTest.cpp的文件内容如下:#include #include “DllTest.h“int _stdcall example(int value)printf(“value: %dn“, value);return 1;上面代码只是简单的打印传递过来的参数。请注意,这里是使用printf打印的,因此在后面调用的例子中,控制台方式才能显示出来。第三步,在创建了头文件和实现了接口以后,就需要创建模块定义
4、文件,如下图所示。这个文件的意义在于说明DLL提供哪些接口给其它应用程序调用。模块定义文件DllTest.def的内容如下:LIBRARY “DllTest“EXPORTSexample上面代码只导出example接口,即其它应用程序调用DllTest.dll 的接口时,只有example接口可以使用。2.3 版本信息生成的 DLL 一般需要版本信息或者一些说明信息,当然也可以没有。首先,添加资源文件,如图所示:这里是添加版本信息,选择“Version”即可。默认的版本信息如下:如果在以后的开发中,提供给别人使用的 DLL 有不同版本,可以通过这里的版本号来说明。一般越后面的版本,版本号越大。
5、2.4 生成 DLL在开发完毕DLL接口以后,便可以生成。生成方式有两种,一种是Debug方式,一种是Release 方式。其中第一种方式可以在本机器调用调试DLL工程的时候可以使用。再生成给别人调用的时候,使用Release 方式生成DLL。Release方式生成DLL时注意,设置其“代码生成”方式为 “多线程/MT” ,如下图所示。这种方式下别人调用DLL就不需要另外的DLL环境了。至此,DLL开发完毕,其生成的Release内容如下:其中,DllTest.lib 在别人调用开发时,使用到。DllTest.dll 在别人程序运行时,需要使用到。3 DLL 调用测试例子上面第二节,说明了如何
6、创建一个简单的 DLL 工程,下面说明如何调用 DLL 提供的接口。3.1 创建测试工程创建控制台测试例子 test 工程,过程如下:注意,这里选择的是默认的“控制台应用程序” 。3.2 配置 DLL 库文件把第二节生成 DLL 的库文件拷贝到测试工程 test 下。库文件的文件包括:DllTest.h、DllTest.lib 和 DllTest.dll。配置头文件路径,如下:“C/C+ 常规 附加包含目录” ,如果头文件不在测试工程目录下,需要配置头文件路径,这里可以设置多个目录,也可以设置相对路径。由于头文件在 DllTest.h 在工程下,该目录可以不设置。配置库文件 lib,如下图所示: