对于实用多了DLL动态链接库的同学来说,可能乍一看到静态链接库,会不由自主的想到导出函数,导入函数之类的概念。最近我在看一个离职同事的代码时就陷入了对静态库中全局函数导出的疑问,明明在代码中没有看到有地方对该全局变量有导出,但是在使用该LIB的AP中仍然能看到对该变量extern后的使用。
究其原因,静态链接库不存在导出的概念,在链接过程中,静态链接库LIB中的指令都全部被直接包含在最终生成的 EXE 文件中了 ,因此如果用的是静态链接库,那么也就不存在“导出某个函数提供给用户使用”的情况。对于使用该静态库的EXE文件来说,直接使用LIB中的函数和全局变量即可。
另外一点在使用中需要注意的是:静态链接库中不能再包含其他的动态链接库或者静态库 ,而在动态链接库中还可以再包含。