C++动态链接和静态链接
前言
C++
vs2022
链接的目的是为了找到声明的函数对应的实现,所以无论是哪种链接,在此之前都需要先在”属性 - C/C++ - 附加包含目录“ 里面引用所包含的头文件的文件夹(一般在所下载的项目的include文件夹下)
- 以
glfw
为例,其目录下包含includes
、lib
、dll
, 其中后两者对应的就是静态和动态链接库
静态链接
- 所包含的这个函数的实现是在
xxx.lib
文件里面,静态链接最后打包生成的exe也包含了这个玩意,在属性 - 链接器 - 附加依赖项
里面定义 - 为了简化上面的定义,可以在
属性 - 链接器 - 常规 - 附加库目录
定义好xxx.lib
文件所在的目录,然后附加依赖项里面就只需要写xxx.lib
即可
动态链接
- 所谓的动态链接,就是打包出来的
exe
文件是不包含函数的实现的,程序在运行的时候会去找exe文件同级目录下的xxx.dll
文件,去找对应的实现函数,相对静态链接来说,动态链接由于没有包含函数的实现,打包出来的体积更轻量 - 除了还有把
xxx.dll
文件放到exe
同级,还可以在系统的环境变量里面的path
中添加dll文件的目录,这样的话系统在启动exe
文件的时候会自动找到这个目录,实现dll
文件和exe
文件的“分离”
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 myl's blog!
评论