练习环境: Microsoft Visual studio 2010
练习语言: c++
练习目的: 创建c++编写的dll文件以及使用dll文件
练习步骤:
一:创建Dll
1.创建WIN32控制台应用程序项目,取名为DllTest,点击确定。
(文件->新建->项目->Visual C++->Win32->Win32控制台应用程序)
旁白:虽然创建的是应用程序,不过不要紧张,一会儿会通过向导把它变成dll程序的。
2.根据应用程序向导依次选择:
1)概述选项卡,直接点击下一步
2)应用程序设置选项卡,在应用程序类型栏选择 Dll,点击完成。
旁白:其他设置均为默认,点击完成后,通过之前向导的设置会自动帮你创建默认的代码以及框架。
3.为您的主程序添加一个头文件,取名为DllTest.h
(解决方案的项目名上右键->添加->新建项->头文件)
旁白:设置头文件的目的就是为了能让外部程序通过这个头文件来访问dll中的方法等等。
4.在DllTest.h添加如下示例代码:
#ifdef DLLTEST_EXPORTS
#define DLLAPI extern "C" __declspec(dllexport)
#else
#define DLLAPI extern "C" __declspec(dllimport)
#endif
DLLAPI int __stdcall DoAdd(int a, int b);
旁白:DLLTEST_EXPORTS 与 DLLAPI都是自己起的名字,DoAdd()是想要提供给外部接口的方法。
5.在DllTest.cpp中实现方法,代码如下:
// DllTest.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#define DLLTEST_EXPORTS
#include "DllTest.h"
int __stdcall DoAdd(int a, int b)
{
return a + b;
}
6.编译 + 生成
如果编译的过程中如果出错(C1083),请在修改项目属性,预编译头不使用。
如果在生成的过程中如果出错(LNK1123),请在项目属性输入和输出的嵌入清单选择否。
但是根本的解决方案是
请点击链接查看结果
旁白:先编译,后生成,如果期间总是报莫名其妙的错,就清理下,然后点击重新生成,再或者重启软件。(已经确定代码没问题)
7. 创建Dll的所有步骤完毕,生成后,可以在项目目录下的Debug目录找到DllTest.dll 和DllTest.lib,即我们想要的成果物,并且把代码中头文件一并拷贝出来。
也就是说,目标文件有三个DllTest.h,DllTest.lib,DllTest.dll
二:使用Dll
1.创建自己的应用程序,这里就以c++的Win32控制台应用程序为例,取名为MainTest
(创建方法与上一节的dll创建一模一样,只是向导的时候和Dll的不太一样,这里疯狂点下一步就行)
2. 拷贝上一节生成的三个文件(.h,.lib,.dll)到MainTest项目中,并且右键MainTest的项目,引用DllTest。
3.把DllTest.h添加到项目中,并且在MainTest.cpp中include进来,然后,就可以使用了,MainTest.cpp完整代码如下:
// MainTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "DllTest.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 5;
int b = 6;
int c = DoAdd(a,b);
return 0;
}
4.点击运行,通过设置断点,可以看到c的结果为11,搞掂。
以上讲说是边操作边记载的,运行结果真实有效。