dll的封装和使用 In 巴西队世界杯名单 @2025-07-09 20:20:16
背景
在windows平台下,要实现函数的封装,一般采用的是dll动态库的形式
实现了函数的封装就意味着实现过程的隐藏
可以实现跨平台和跨语言的使用
实施步骤
生成dll动态库
在VS中生成新项目,应用类型选择DLL
新建文件(由于生成的都为CPP文件,此时也新建CPP文件)
编写代码,实现函数,编译生成dll动态库
extern "C" //extern "C"指定使用C语言的方式编译,不加入这句话的话,无法在C语言中调用
{
__declspec(dllexport)
//函数实现
__declspec(dllexport)
//函数实现
}
使用dll动态库
第一种方法:
将生成的dll动态库复制到项目所在可执行程序目录下
将生成的.lib文件复制到项目源文件目录下
在使用前载入文件(在头文件中声明)
#ifndef __DLLNAME_H
#define __DLLNAME_H
#pragma comment(lib, "dllname.dll")
//加入函数声明
#endif
载入头文件
第二种方法:
将生成的dll动态库和lib文件复制到.c文件同级目录
在属性,连接器,输入中添加依赖项,输入lib名
载入头文件
dll调用原理
dll没有主函数,无法直接运行
exe在运行的时候,可以调用dll,将其加载到所属内存中执行
exe只是调用dll的功能
动态库与静态库的区别
动态库在编译时独立,运行时加载。可以只改变动态库,而不改变可执行程序。同时,动态库中的代码与位置无关
静态库在编译时候编入可执行文件。