C++附加---动态库(.dll)的创建与使用(VS编译器实现)

一、动态库的概念

①概念:动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,可以被多个程序共用。
②特点:

  • 动态函数库在编译的时候并没有被编译进目标代码中,需要用到相应的功能,代码才会被调用到程序中,节约内存
  • 动态库的改变,程序也会跟着动态变化,升级更新比较方便

③动态库的生成与使用:

  • 动态库的使用需要生成.dll与.lib两个文件
  • .dll存储着类、函数等代码的地址,.lib文件存储着类、函数等的实体,程序运行时,通过.dll文件中的地址找到.lib中的代码并链接进程序
  • .lib文件需要提供接口,才能被外界调用,创建接口的方法是:在向外界提供代码的前面加_declspec(dllexport)
  • 如果不加_declspec(dllexport),动态库只生成.dll文件,不会生成.lib文件。同时,若程序中只有一部分代码加了_declspec(dllexport),则只有这部分代码才可以被外界调用,其它的不可以

二、VS编译器下动态库的创建

方法:

  1. 一个项目建议完成后,在属性中将配置类型改为动态库(.dll),并生成解决方案
  2. 在项目路径的上一路径Debug文件夹下会生成一个.dll文件与.lib文件
    在这里插入图片描述
    在这里插入图片描述

三、VS编译器下动态库的调用

动态库的调用分为三步曲,建议一个工程后:

  1. 将.dll与.lib与.h文件放在工程的同目录下
  2. 在代码中导入头文件,解决资源方案管理器中也加入头文件
  3. 调用动态库:分为显示调用和隐式调用

显示调用:

//在代码中加入,前提:工程文件夹下含有.lib文件
#pragma comment(lib,"动态库.lib")

或者在解决资源方案管理器中添加.lib文件:资源文件——>添加现有项(动态库.lib)
隐式调用:

  1. 设置包含目录:属性==>配置属性==>VC++目录==>包含目录(填.h所在文件路径)
  2. 设置库目录:属性==>配置属性==>VC++目录==>库目录(填.lib所在路径)
  3. 设置附加依赖项:链接器==>输入==>附加依赖项==>添加.lib的名称(动态库.lib)

:如果工程下已经包含了.h与.lib文件,包含目录和库目录可以不设置(建议设置),但附加依赖项必须设置
但是如果工程下不包含.h与.lib文件,就要设置.h与.lib所在的路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值