CImg是一个仅限标题的库,它们使用模板,这是他们所指的.
如果他们使用某种类型的预编译库(.dll/.lib/.a/.so),则库文件必须包含整个 CImg库,无论您实际使用哪个库.
对于静态链接库(.lib或.a),链接器可以删除未使用的符号,但这可能取决于优化设置.
当整个库包含在一个或两个头文件中时,它实际上只是在编译时编译#include,因此它是与程序其余部分相同的编译过程的一部分,并且编译器可以轻松确定库的哪些部分是使用过,哪些不是.
并且因为CImg API使用模板,所以不会为从未调用过的函数生成代码.
他们有点过头,虽然它,因为其他的答案指出,未使用的符号通常会被剥离出来呢.