Answers:
当您声明某些内容时,您只是保证在链接期间它将可用并进行唯一标识。静态库不过是用于定义格式超出标准的容器。因此,这具有以下含义:
1)我在这里不太了解您的要求,但是一个静态库可能在很大程度上依赖于另一个静态库。您要么保证在可执行文件的最后链接阶段就可以使用该库的定义(通过提供它作为链接依赖项)。或者,您可以在链接静态库的过程中“合并”它。
2)答案是,您唯一需要做的就是在链接lib1期间不链接lib2。
总的来说,根据我的经验,最好的方法是仅合并私有的库,原因是否则,当项目的其他部分与您共享依赖关系时,客户端将遇到多重定义的符号冲突。
我对此快速说明两点:10(对不起的笑话)。
要稍微扩展,请按以下步骤进行:
1-静态库可以依赖于另一个静态库,什么都不依赖,甚至不依赖于动态库:在前两个实例中,新静态库的所有代码都将合并到新的SLL(静态链接库)中,但是,第三个选项,取决于环境可能导致SLL产生以下结果之一,
因此,总之,您可以将静态库链接到静态库
2-如果lib1和lib2都是静态的,并且lib1已与lib2链接,则lib2的所有功能将在lib1中可用,而无需包括lib2,因为lib2将在lib1内静态链接(请考虑俄罗斯娃娃,使用lib2较小)。
在您描述的场景中,必须包含的每个文件中都必须有离散功能,该功能不是静态链接的,因此需要多个文件,否则就可以包含一个文件,就可以了。
请执行以下操作:引用6个静态链接库的一个.h文件:您需要在项目中包括7个文件才能获得全部功能
从上述.h文件创建的一个SLL仅需要包含新的SLL即可在编译时进行链接:
希望这会有所帮助,并且我已经理解您的要求。