简介
- DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”。在很多Windows程序中包含有许多dll文件,在程序运行时调用。有着消耗资源比较少,动态加载,程序模块化和简化安装和部署的特点。
- Static library .lib是一种文件名后缀,代表的是静态数据连接库,在windows操作系统中起到链接程序和函数的作用。
- 简单的区分两者就是,dll是运行时用,lib是编译的时候使用。一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。
前言:此案例是导出函数,如果你想导出类做dll,可以照搬以下操作步骤,换汤不换药。
目录
前言:此案例是导出函数,如果你想导出类做dll,可以照搬以下操作步骤,换汤不换药。
①右键解决方案,添加->创建项目,选择win32项目,起个名称然后点击确定
④在创建好的Win32项目里面,添加test.c 与 test.h
二、给工程中main.cpp test.h test.cpp文件添加代码
一、项目搭建
1、创建一个c++空项目
2、选择空项目,创建项目名称与路径
3、添加main.cpp程序入口函数
4、在原有的解决方案中添加WIN32的dll项目
①右键解决方案,添加->创建项目,选择win32项目,起个名称然后点击确定
②点击下一步
③选择dll 与空项目,然后点击完成
④在创建好的Win32项目里面,添加test.c 与 test.h
二、给工程中main.cpp test.h test.cpp文件添加代码
1、给解决方案中的文件添加代码
①main.cpp 中的代码
#include <iostream>
using namespace std;
int main()
{
system("pause");
return 0;
}
②test.h 中的代码
#pragma once //防止头文件重复包含
__declspec(dllexport) int sum(int a, int b);
③test.cpp中的代码
#include "test.h"
int sum(int a, int b) {
return a + b;
}
2、生成dll与lib
①testCreateDLL项目进行生成,如图所示,成功1个,失败0个。
注意:生成的dll 与 lib在你的debug目录下
②CreateDLL项目进行调试,会跳出终端
③此时创建的CreateDLL、testCreateDLL两个项目都能正常运行,搭建环境已完成。
进入debug目录下可以直观的看到新生成的dll与lib,还有main函数生成的Ctreat DLL.exe
三、在解决方案中使用dll与lib
以上两步分别搭建好了项目工程,生成了我们想要的dll与lib。这一步我们在项目中,如何去使用自己生成的dll与lib。
①在项目中添加头文件,也就是在我们CreateDLL项目中添加test.h这个头文件,如图所示。
右击我们的CreateDLL项目,点击属性。
C/C++ -> 附加包含目录 -> 编辑 -> 添加 test.h头文件路径
添加头文件目录成功后,在CreatDLL这个项目里去添加test.h这个头文件,他会自动出。
②添加lib路径与lib声明
添加lib路径:链接器-> 附加库目录 -> 编辑 -> 将生成的路径添加进来
添加lib声明 :属性-> 链接器 -> 输入 -> 附加依赖项 ->编辑 然后添加你生成的lib名称添加到这里,点击确定。
四、在CreateDLL使用项目中的main函数使用dll
在此CreateDLL项目中任何一个.cpp文件中,只要包含了test.h这个头文件,就直接可以使用test.cpp中的函数。
普通函数导出做dll命名方式,类导出做dll命名方式。
//导出类
class __declspec(dllexport) class_name
{
......//members
}
//导出函数
__decspec(dllexport) return_type function_name(type valure);