静态库使用

时间:2016-10-21 17:38:43

标签: ios xcode static-linking objective-c++

我有一个静态库,里面有另一个静态库。
让我们称它们为LibA和LibB。
LibA是面向外部的库,换句话说,LibA在内部调用LibB,而LibB没有外向函数调用。
LibA的标题是extern C,因此名称不会被破坏。
我使用Swift测试了这个库并且它完美无缺。
但是当我尝试在Obj-C项目中使用它时,我得到以下错误:

 "_OBJC_CLASS_$_UIResponder", referenced from:


  _OBJC_CLASS_$_AppDelegate in AppDelegate.o


  "_OBJC_CLASS_$_UIViewController", referenced from:


  _OBJC_CLASS_$_ViewController in ViewController.o


 "_OBJC_METACLASS_$_UIResponder", referenced from:


 _OBJC_METACLASS_$_AppDelegate in AppDelegate.o


"_OBJC_METACLASS_$_UIViewController", referenced from:


 _OBJC_METACLASS_$_ViewController in ViewController.o


 "_UIApplicationMain", referenced from:


 _main in main.o


 ld: symbol(s) not found for architecture x86_64


 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我确保LibA和LibB都是为x86_64架构而构建的。
非常感谢任何帮助。

编辑:我能够解决这个问题。在Build Phases下,我不得不将UIKit.framework添加到Link Binary with Libraries。这修复了错误并允许我使用我的库。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

UIKit.framework添加到您应用的目标。