gpt4 book ai didi

objective-c - 静态库xcode的框架

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:19 25 4
gpt4 key购买 nike

我刚刚使用这里的问题 Process for linking static ObjC libraries in XCode 向我的项目添加了一个链接库以及答案中链接的文档。

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

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

因此,鉴于所有错误都提到了 CoreData 对象,我将 CoreData 框架添加到我的应用程序并成功构建。所以现在我尝试从我的应用程序中删除 CoreData 框架并将其添加到库项目中,他们同时构建了这两个框架,但都失败了。

那么为什么当我在我的项目中添加了 coredata 而不是在库项目中并且只有库使用它时它会起作用?

(为什么这个库本身不需要核心数据框架就可以构建?)

最佳答案

库是静态的。它不是一段独立的代码,它必须被链接起来。

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

如果您想在应用程序中使用具有 Core Data 依赖项的库,则必须链接到 Core Data.framework。

向静态库添加链接阶段没有效果,因为创建静态库时不涉及链接器,只有编译器(和存档器)。

关于objective-c - 静态库xcode的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5117913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com