TL; DR
您好,
在开始之前,我知道如何在Xcode中编译一个针对iOS设备和模拟器的静态库。但是,这次我依赖于第三方库,我不想在静态库中包含。我只想参考它。但是,每当我构建静态库时,我都会遇到词法或预处理器错误,我知道当项目中缺少库时这种错误很常见。发生错误是因为我从项目中删除了库,因为我不想将它内置到静态库中。
有问题的图书馆是AFNetworking。我将使用CocoaPods在安装静态库时显式安装依赖项。
谢谢。
答案 0 :(得分:1)
您可以将lib.a和lib.h添加到项目中。
答案 1 :(得分:1)
当您引用外部代码时,总是需要让项目可以访问标头,否则编译器将无法告诉您是否正在引用外部代码方式。例如。该方法是否存在,您提供的是正确的类型等吗?
实际多次定义符号时,存在重复符号问题 。例如,定义类相关的Objective-C符号仅发生在@implementation...@end
块中,不是在@interface...@end
块中。后者只是让编译器理解事物。
(这也是为什么你可以为私人类定义@interface
并将其正常使用而不会导致重复符号的原因。)
因此,您可以多次包含此类“干净”标题,而无需担心。请注意,我说'干净',因为你可以实际上在标题中定义符号,例如,如果你觉得特别邪恶,在标题中定义C函数甚至是Objective-C @implementation
。但你只需要测试一下。
当您最终链接第三方依赖关系和您的链接时,链接器会抱怨并且毕竟有重复的符号。在这种情况下,请务必查看nm
等列出档案中符号的工具。