我正在构建一个使用最新 Facebook SDK (v3.1) 和 Windows Azure iOS Toolkit SDK 的应用程序。
现在,Azure SDK 需要将 -all_load 和 -ObjC 标志添加到 Build Settings 中的“Other Linker Flags”参数中。这是在链接到包含类别的 Objective-C 静态库时修复已知错误所必需的(请参阅http://developer.apple.com/library/mac/#qa/qa1490/_index.html)。如果没有此设置,Azure SDK 在调用某些方法时会生成“无法识别选择器”的运行时异常。很好,问题解决了。
但是,Facebook SDK 不会在设置这些标志的情况下构建。构建时会产生以下错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SLComposeViewController", referenced from:
objc-class-ref in FacebookSDK(FBNativeDialogs.o)
"_SLServiceTypeFacebook", referenced from:
+[FBNativeDialogs composeViewControllerWithSession:handler:] in
FacebookSDK(FBNativeDialogs.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
关于如何让这两个库很好地结合在一起的任何想法?一个库想要这些标志,而另一个库不会在设置这些标志的情况下构建。