应用篇之dll lib pdb和头文件

建立一个真正的工程时,一般我们都会用到第三库或者自己建的库。这时候我们需要配置用到的头文件、lib以及dll。另外我们建立自己的静态库或者动态库时,会生成lib甚至dll。它们是什么,有什么作用,

基本概念

  h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。

h头文件

  文件内容一般是声明,预编译时在包含该头文件的文件里展开(即全部复制过去)。如果没有库的头文件里的声明,那么编译器无法知道你调用的是什么类型。

lib文件

  静态库中的lib:该lib包含函数代码本身(即包括函数的索引,也包括实现),在编译时直接将代码加入程序当中。动态库中的lib:该lib包含了函数所在的dll文件和文件中函数位置的信息(索引),函数实现代码由运行时加载在进程空间中的dll提供

dll文件

  运行时需要调用的动态链接库,为函数可执行的代码文件

pdb文件

  pdb为程序数据二进制文件,pdb文件保存着调试和项目状态信息,包含了编译后程序指向源代码的位置信息,用于调试的时候定位到源代码,主要是用来方便调试的。release后建议删掉,有利于保护程序。

总结

  在vs中新建生成静态库的工程,编译生成成功后,只产生一个.lib文件。在vs中新建生成动态库的工程,编译成功后,产生一个.lib文件和一个.dll文件
  论你使用静态库还是动态库,如果不设置头文件和lib文件,编译肯定通不过的。当你在使用动态库时,只设置头文件和lib文件是可以编译通过的,但是运行时会报错。这时候你设置下dll文件(最简单的是把dll文件复制到当前项目目录下,一般不是最佳的方法)。如果你调试的话,无论对调用的库改了什么,都要更新pdb文件。
   当你只修改自己动态库的cpp文件,那么只需要覆盖旧的dll文件,调用该动态库的exe文件就可以使用你修改的内容。但是你修改了头文件,那就麻烦了,调用该动态库的exe文件需要重新重新生成。

你可能感兴趣的:(C++,dll,lib,头文件,调式)