所以我过去曾多次嵌套静态库,但从来没有像这样,它引起了一些问题。
现在让我们假设我有 3 个静态库,A、B 和 C。一个项目按如下方式使用它们。
A是由常用的Custom Views、Data structures、Categories组成的基础库。 B 是与 A 链接的库,其中包含在多个项目之间共享的 View Controller 。 C 是另一个与 A 链接的库,其中包含在多个项目之间共享的 View Controller 。
这个特定项目使用 B 和 C 中的代码。因此结构如下所示:
A
/ \
B C
\ /
Project
并且由于 Xcode 链接静态库的方式基本上合并了它们,B 和 C 都具有 A 的所有符号。所以我收到重复符号链接(symbolic link)器错误。我该如何处理这个问题?我需要弱链接吗?还是我缺少特定的标志?除了链接二进制文件之外,我是否需要设置某种类型的依赖项?
我在这里进行了谷歌搜索,发现了很多有用的信息,但我无法将任何信息扭曲到这种特殊情况中。
思想更新
所以让我问这个,因为在阅读静态库之后这似乎是一个可能的解决方案,但实际上不应该这样。
与其拥有 3 个独立的静态库,不如将它们全部放在一个项目中,只拥有多个静态库目标?甚至不使用 Target Dependencies,仅使用 A、AB、AC 和 ABC 目标,这些目标包含目标的正确文件和 header ?这对于build设置来说无疑是相当复杂的,并且可能会使源代码分发有点复杂,但它会解决我当前的问题并且可能是处理事情的更好方法。怎么想的?
最佳答案
看起来您没有正确创建静态库 B
和 C
,因为您包含来自静态库 A
的目标文件。这是不正确的。而是让 A
、B
和 C
只包含它们自己的类的目标文件,并将它们全部放在 Project 的最终链接中
二进制。
您必须允许
B
查看A
的头文件才能正确编译。您必须允许
C
查看A
的头文件才能正确编译。您必须允许
Project
查看A
、B
和C
的头文件以及A
、B
和C
的库(.a
) 文件以便正确链接。
我认为一旦您正确设置了项目依赖项,Xcode Workspace 将为您处理所有 header /库搜索路径设置,但我可能错了您可能必须自己设置这些路径。
关于xcode - 复杂的静态库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14445909/