gpt4 book ai didi

ios - 静态库依赖不包含在二进制文件中

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:29 28 4
gpt4 key购买 nike

我已经构建了一个依赖于 CFNetwork.framework 的静态库(我们称之为 A),它正在 xCode 中成功构建。我已将 CFNetwork.framework 包含在“链接二进制文件与库”构建阶段。这个静态库有自己的项目。

由于某种原因,当尝试在另一个项目(我们称之为 B)中使用这个静态库时,它在链接阶段失败,提示找不到 CFNetwork 的符号。

我已将 A 添加为 B 的目标中的依赖项(以便 A 始终在 B 成功之前编译)并且我还将 A 添加到 B 的“将二进制文件与库链接”构建阶段。

有没有人遇到过类似的问题?

编辑:如果我将 CFNetwork.framework 添加到 B 的“Link Binary With Libraries”构建中,它将开始成功构建。

最佳答案

是的,您还需要将CFNetwork.framework 添加为项目B 中的依赖项。

这是设置依赖关系的正确方式。您需要在静态库 A 的发行说明中记录对 CFNetwork.framework 的依赖。

一定要看看Guidelines for Creating Frameworks ,特别是“在你的框架中包含什么”。您会看到 Apple 建议不要创建伞式框架(即在您的分布式静态库中包含类似 CFNetwork.framework 的内容)。

Don’t Create Umbrella Frameworks

While it is possible to create umbrella frameworks using Xcode, doing so is unnecessary for most developers and is not recommended. Apple uses umbrella frameworks to mask some of the interdependencies between libraries in the operating system. In nearly all cases, you should be able to include your code in a single, standard framework bundle. Alternatively, if your code was sufficiently modular, you could create multiple frameworks, but in that case, the dependencies between modules would be minimal or nonexistent and should not warrant the creation of an umbrella for them.

如果你有很多依赖项,那么值得考虑使用像 Cocoapods 这样的依赖项管理工具。 .

关于ios - 静态库依赖不包含在二进制文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544717/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com