项目中的静态库:为什么静态库使用的框架也需要添加到项目中?

时间:2015-04-23 10:32:22

标签: xcode frameworks static-libraries linker-errors

我正在开发一个静态库,它被添加到我的主项目中,用于测试静态库的功能。里面的静态库使用了一些第三方组件,这个第三方组件需要添加一些额外的库(例如:libz.dylib,SystemConfiguration.Framework)。没关系,但是当我尝试构建包含静态库的主项目时,我遇到了大量的链接器错误。我想,如果我向主项目添加相同的框架和库,我需要添加到我的静态库,链接器错误消失,项目成功构建。问题是我真的需要将所有这些资源添加到主项目中吗?如果我将静态库提供给其他人使用,我会觉得很疯狂,我需要在文档中包含一堆框架和库,这些框架和库也必须在集成器项目中添加?或者我错过了一些重要的东西?

1 个答案:

答案 0 :(得分:0)

这是因为静态库没有链接,与可执行文件或动态库不同。

静态库只是目标文件的存档,而目标文件包含对它们使用的符号的外部引用。在链接可执行文件/动态库之前,不会解析这些引用。

因此,当您链接到静态库时,您负责向链接器提供任何依赖库,这些库本身可以是静态的或动态的。