我在创建的自定义框架中使用coreLocationframework,将框架集成到我的项目中后,运行应用程序后出现以下错误
架构 i386 的未定义符号: "_OBJC_CLASS_$_CLLocationManager",引用自: objc-class-ref in MYFramework "_kCLLocationAccuracyBest",引用自: -[Utility getCurrentLocation] in MYFrameworkLD:找不到架构 i386 的符号clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
之后,我也在我的项目中添加了相同的核心定位框架,然后错误没有出现,代码正在工作。
所以我想知道这背后的原因是什么,如果我也添加其他框架,就会发生这种情况?
每当构建依赖于另一个框架的静态库或框架时,都必须将该框架链接到框架和最终项目中。
如果要将此框架发布到某个位置供其他人使用,则应让说明在他们安装您的框架后,还必须链接CoreLocation
。
例:
MyFramework
--> Frameworks
--> CoreLocation.framework
MyApp
--> Frameworks
--> MyFramework.framework
--> CoreLocation.framework
框架的核心是一个静态库,其中包含框架中的所有代码。在 iOS SDK 中引用任何核心框架时,它们会动态链接到您的项目。因此,您在框架项目中引用的任何核心框架也需要在链接到您的框架的应用程序中引用。