VS2019 C++动态链接库的创建使用(1) - 创建使用dll
VS2019 C++动态链接库的创建使用(1) - 创建使用dll
静态库:函数和数据被编译进一个二进制文件,通常扩展名为.lib,在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件。
动态库:往往提供2个文件,一个是引入库和一个DLL,引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中导出的函数。
使用DLL的好处:1.可以采用多种编程语言来编写;2.增强产品的功能;3.提供二次开发的平台;4.简化项目管理,同时进行开发;5.可以节省磁盘空间和内存,多个程序使用同一种资源;6.有助于资源的共享;7.有助于实现应用程序的本地化。
动态链接库的加载两种方式:
隐式链接:
①新建DLL的程序,在里面新建加法和减法两个函数;
编译后打开工程下的DEBUG文件夹,可以看到生成的dll文件;
打开Cmd命令床开,切换到此路径下(复制文件路径,在命令窗口里右键即粘贴),输入dumpbin -exports Dll1.dll,可以看到该DLL导出的信息,如果dumpbin命令不识别,需要添加环境变量(我的安装路径是:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.23.28105\bin\Hostx64\x64)
我们重新回到代码中,在每个函数名前增加_declspec(dllexport),再重新编译生成,发现生成的文件中多了一个Dll1.lib文件,这就是前面说的引入库文件;
接着再重新运行cmd命令,可以看到我们导出的函数信息,因为c++具有重载功能,所以函数命名会按编译器内部标识的一堆符号显示。
测试一下结果:重新新建C++控制台程序,调用Add和Sub函数,在属性里附加库依赖项加入Dll1.lib,并把文件(Dll1.lib和Dll1.dll)复制到该目录下;
红色圈起来的是表明函数在外部定义,第一种效率比下面的高。
同样可以使用dumpbin查看测试程序的输入文件信息
查看程序依赖的动态库—dumpbin和depends
dumpbin是VS自带的工具,进入Visual Studio 2010 的命令提示
查看程序或动态库所依赖的动态库
dumpbin /dependents abc.exe
查看动态库的输出函数
dumpbin /exports abc.dll
另一款查看动态库依赖的小工具depends,官网http://www.dependencywalker.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?