平台
Visual Studio 2015
Qt Creator
概述
动态链接库(Dynamic Link Library
)DLL
文件与exe
文件一样也是可执行文件,但是DLL
也被称之为库,因为里面封装了各种类和函数等,就像是一个库一样,存储着很多东西,主要是用来调用的。调用方式主要分为两种:隐式(通过lib
文件与头文件)与显式(只通过DLL
文件)。
代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,ATL
、MFC
等,它们都以源代码的形式发布。由于这种复用是源码级别
的,源代码完全暴露给了程序员,因而称之为白盒复用
。为了弥补白盒复用
的不足,就提出了二进制级别
的代码复用。使用二进制级别的代码复用一定程度上隐藏了源代码,对于缓解代码耦合现象起到了一定的作用。这样的复用被称为黑盒复用
。
注:实现黑盒复用
的途径不只dll
一种,静态链接库甚至更高级的COM
组件都是。
Visual Studio实现C++的动态链接库
创建动态链接库
新建工程项目CreateDLL
打开Visual Studio 2015
新建工程,并选择DLL
应用程序类型。
创建.cpp和.h文件
右击项目工程,添加->新建项,依次建立createDLL.cpp
和createDLL.h
文件。
编写文件
createDLL.h
1 | __declspec(dllexport) void test_fun(); |
createDLL.cpp
这里写了一个简单的hello world
测试程序。1
2
3
4
5
6
7
8
9
using namespace std;
void test_fun()
{
cout << "hello world" << endl;
}
编译
重新生成解决方案
文件位置
在Debug
文件夹下,有新生成的动态链接库文件。
使用动态链接库
新建工程UseDLL
这里选择控制台应用程序。
添加文件
将刚才的createDLL.dll
,createDLL.lib
和createDLL.h
文件放到工程文件目录下。
新建.cpp
调用之前的函数即可。1
2
3
4
5
6
7
int main()
{
test_fun();
return 0;
}
QT实现C++的动态链接库
创建动态链接库
新建工程项目CreateDLL
打开Qt Creator
新建工程,并选择Library
模板中的C++库
。
重命名为Qt Creator
,后续操作直接下一步即可。
创建完成后,工程文件夹下会有3个文件。
编写类
在createdll.h
和createdll.cpp
文件中编写该类。如添加一个显示hello world
的函数。
createdll.h
1 |
|
createdll.cpp
1 |
|
编译
构建->运行即可。如果没有报错,则在项目的同级文件夹下会产生一个名为build-CreateDLL-Desktop_Qt_5_8_0_MSVC2015_64bit-Debug
文件夹(如果没有更改的话)。
文件位置
打开其Debug
文件夹,里面有新生成的dll
库文件。
使用动态链接库
新建工程UseDLL
打开Qt Creator
新建工程,并选择Application
模板中的Qt Console Application
。其次和之前类似。
添加文件
将刚才的createdll.h
和createdll.cpp
文件放入到该工程的文件夹下。并添加至该工程项目中。
除此之外,还有一个很重要的步骤!将刚才生成的CreateDLL.dll
库文件(位于Debug
文件夹下)添加至工程文件.pro
中。语法规则为:LIBS += -L路径 -l库名(不需要加后缀)
。
编写.cpp
1 |
|
运行结果为: