我制作了静态库A
,该库正在使用另一个静态库B
。
为了在代码 C
中使用库 A
,我添加了库 A
和 header A
但是B
。
因为我知道静态库是在编译时合并的,所以库B
已经包含在A
中。
但是当我编译代码 C
时,它似乎要求我添加库 B
也显示 undefined reference 错误。
当我也添加库 B 时,错误消失了。
为什么?
最佳答案
您需要同时添加 A 和 B。
当静态库 A 使用静态库 B 时,B 绝对不会合并到 A 中。这是不可能的,因为在生成静态库时没有链接步骤。
这就是 Linux 上共享库和静态库的区别。
如果你的库写得好,你可能不需要在代码C中添加B头,但在链接时,(可执行或共享库甚至Windows中的DLL)你将需要所有使用的静态库。
关于c++ - 在链式静态库上,我是否必须添加所有链式库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27170726/