动态链接库的创建与使用

来源:互联网 发布:伴生活智能门禁 知乎 编辑:程序博客网 时间:2024/05/17 22:47

练习环境:  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) #endifDLLAPI 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,搞掂。


以上讲说是边操作边记载的,运行结果真实有效。
0 0