前言

  • C++

  • vs2022

链接的目的是为了找到声明的函数对应的实现,所以无论是哪种链接,在此之前都需要先在”属性 - C/C++ - 附加包含目录“ 里面引用所包含的头文件的文件夹(一般在所下载的项目的include文件夹下)

  • glfw为例,其目录下包含 includeslibdll, 其中后两者对应的就是静态和动态链接库

静态链接

  • 所包含的这个函数的实现是在 xxx.lib 文件里面,静态链接最后打包生成的exe也包含了这个玩意,在属性 - 链接器 - 附加依赖项里面定义
  • 为了简化上面的定义,可以在属性 - 链接器 - 常规 - 附加库目录 定义好xxx.lib文件所在的目录,然后附加依赖项里面就只需要写xxx.lib即可

动态链接

  • 所谓的动态链接,就是打包出来的exe文件是不包含函数的实现的,程序在运行的时候会去找exe文件同级目录下的xxx.dll文件,去找对应的实现函数,相对静态链接来说,动态链接由于没有包含函数的实现,打包出来的体积更轻量
  • 除了还有把 xxx.dll 文件放到exe同级,还可以在系统的环境变量里面的 path 中添加dll文件的目录,这样的话系统在启动exe文件的时候会自动找到这个目录,实现dll文件和exe文件的“分离”