【问题标题】:Error compiling Redis library into iOS Project ("_OBJC_CLASS_$_ObjCHiredis", referenced from:)将 Redis 库编译到 iOS 项目中时出错(“_OBJC_CLASS_$_ObjCHiredis”,引用自:)
【发布时间】:2015-03-24 09:25:06
【问题描述】:

我正在尝试将Redis模拟器静态库集成到我的iOS项目中,并做了以下事情。

  1. 将静态库拖放到我的项目文件夹中
  2. 在构建设置中添加标题搜索路径
  3. 检查静态库是否添加到设置中的构建阶段
  4. 设置标头搜索路径
  5. 其他链接器标志设置为“-all_load

我不确定哪里出错了,但在编译时出现以下错误。

非常感谢这方面的任何帮助。

【问题讨论】:

  • 通常在您使用某些类而不将它们的框架添加到项目时会发生这种情况。请检查一下 Redis 需要哪些框架。
  • 当我在设备上运行它时它工作得很好,但它给我在模拟器上的麻烦......

标签: ios xcode redis ios-simulator linker-errors


【解决方案1】:

我也遇到了这样的错误,并发现在“构建阶段”->“编译源”中为目标添加 .m 文件可以解决我的问题。

实际上,如果我们在向其添加任何新库时错过了在“添加到目标”名称中勾选目标名称,就会发生这种情况。 (对于您的情况,拖放后您可能会看到一个对话框,其中包含根据需要复制项目、添加到目标等选项。)

最终构建并运行。希望这能解决您的问题!

【讨论】:

  • 我已经处理了这一点,但错误仍然没有消失
【解决方案2】:

您拖动的静态库不是为 i386 架构(模拟器)构建的,请尝试在设备上运行您的应用程序,或为设备构建。基本上,您的应用与相应的库将适用于为其构建的所有此类架构(armv7、armv64)。

如果您想使用该库并在模拟器上构建您的应用程序,您需要同样为 i386 构建的静态库。这可以由静态库的开发者提供。

基本上,胖(静态库)文件是使用 i386 和 armv7(任何需要的架构)的静态库创建的,并附带在模拟器和设备上工作的静态库的 SDK。

fat 文件是通过对各个架构静态库执行 lipo 命令来创建的。

【讨论】:

  • 我很确定我已经添加了用于模拟器的静态库。至少他们的 GITHUB 页面是这么说的
  • 除此之外,还有一个由开发者提供的用于设备的库,它工作得非常好。这个问题只存在于模拟器中
  • 是的,这就是我的观点,该库仅针对设备架构构建,而不是为 i386(模拟器)构建,这就是为什么它抱怨 ld: symbol(s) not found for architecture i386
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
  • 1970-01-01
  • 2017-06-28
  • 2022-08-16
  • 2017-01-07
  • 1970-01-01
相关资源
最近更新 更多