【发布时间】:2014-06-07 00:32:12
【问题描述】:
我正在编写一个应用程序,它通过 CocoaPods 使用外部库,例如 AFNetworking、ReactiveCocoa 等,以及我之前编写的一个静态库。静态库还包含一些来自 CocoaPods 的外部库。
我已将我的静态库设为 CocoaPods 的本地 pod,并将其作为我的 pod 之一导入。
但是,在编译我的新应用时,发生了错误。
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_YADAClientManager", referenced from:
objc-class-ref in DZPAppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
YADAClientManager 是我的静态库的一类,在我的新应用程序中使用它的唯一代码是在 DZPAppDelegate.m 中的 application:didFinishLaunchingWithOptions:
[YADAClientManager sharedClientManager];
如何解决这个编译错误?并提前致谢。
编辑:
在我的应用目标的 Build Phrase 中,Link Binary With Libraries 选项中,我添加了我的静态库的 *.a 文件,例如 libPods-MyApp-MyStaticLibrary.a,上面的问题解决了,但又出现了一个报告缺少AFNetworking 和ReactiveCocoa 符号的问题。
在我添加了这些库的 *.a 文件后,问题就解决了。
但我不认为这是解决问题的优雅方式。
【问题讨论】:
-
你是从工作区编译项目吗?
-
@BryanChen 我使用了 CocoaPods 提供的 xcworkspace 文件,然后编译了我的应用程序,所以我想我是从工作空间编译项目的。
-
我也遇到了同样的问题,你找到答案了吗?
-
@jAckOdE 我删除了 Link Binary With Libraries 下的所有 libPods-*.a 文件,并一一添加了我需要的 libPods-*.a 文件并解决了问题.