c++ - 在链式静态库上,我是否必须添加所有链式库?

标签 c++ linux static-libraries

我制作了静态库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/

相关文章:

c++ - 在中型项目中 CMake 的最佳方式是什么?

c++ - 在 fork 后删除 condition_variable 时提升崩溃

ios - 使用 Swift 和 xCode9 beta4 创建静态库

C++ (gcc) 嵌套模板问题?

C++ OpenSceneGraph 更改相机眼睛高度

Linux 脚本 - 如何在注销时保持运行?

CMake:如何为安装不同的目标创建别名?

c++ - 如何在其他计算机上部署用visual studio编写的简单boost程序

C++ 函数指针 'base'

c++ - Visual Studio 2010 在项目中创建包/文件夹