繁体   English   中英

静态库xcode的框架

[英]Frameworks for static libraries xcode

我刚刚使用这里的问题为我的项目添加了一个链接库, 用于链接XCode中的静态ObjC库和链接到答案中的文档。

我碰巧知道库使用CoreData对象,比如NSManagedObject ,尽管在库的xcode项目中没有添加CoreData框架,并且它构建时没有错误。 但是,当我构建我的应用程序时,它会出现几个错误,例如:

Undefined symbols:
"_OBJC_CLASS_$_NSManagedObject", referenced from:
  _OBJC_CLASS_$_AClass in library.a(AClass.o)

因此,当看到所有错误提到CoreData对象时,我将CoreData框架添加到我的应用程序并且它已成功构建。 所以现在我尝试从我的应用程序中删除CoreData框架并将其添加到库项目中,并且它们都构建了它们并且失败了。

那么,为什么我在项目中添加了coredata而在库项目中没有添加coredata,只有库使用它?

(为什么库本身不需要coredata框架?)

该库是静态的。 它不是一个独立的代码段,必须链接。

您的应用程序已链接,这意味着链接器将解析所有外部依赖项并填充最终可执行文件中的库函数地址。

如果要在应用程序中使用具有Core Data依赖关系的库,则必须链接Core Data.framework。

将链接阶段添加到静态库没有任何效果,因为创建静态库(仅编译器(和归档程序))不涉及链接器。

现在,有时可以通过在库头文件中使用新的@import语法来避免此问题。 然后,即使您使用静态库,编译器也会自动链接到使用的框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM