【问题标题】:Linker Error while importing third party project导入第三方项目时出现链接器错误
【发布时间】:2012-12-11 12:11:42
【问题描述】:

我正在导入一个第三方项目,它有自己的框架。我想研究那个 API,当我试图打开那个项目时,我得到了

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_T0Command", referenced from:
      objc-class-ref in ViewController.o
  "_OBJC_CLASS_$_T1Command", referenced from:
      objc-class-ref in ViewController.o
  "_OBJC_CLASS_$_iSmart", referenced from:
      objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我花了将近一个半小时寻找解决方案。

Link Binaries with Libraries 包含所需的框架,最初缺少它我已经已经添加

该项目已多次构建和清理。

编辑 1 我已经在框架的二进制文件上使用终端运行了“文件”命令

file iSmartSDK
iSmartSDK: Mach-O universal binary with 2 architectures
iSmartSDK (for architecture armv7): Mach-O object arm
iSmartSDK (for architecture armv6): Mach-O object arm

【问题讨论】:

  • 我也有同样的问题。 iSmart sdk 提供商也应该为 i386 构建他们的框架。我们必须告诉他们。

标签: iphone objective-c ios linker


【解决方案1】:

看起来该框架仅针对 ARM 编译,而不针对 Intel (i386)。尝试在你的 iPhone 上运行它,看看会发生什么..

或者,您可以使用终端在框架的二进制文件上运行“文件”命令,以检查并查看它支持的架构。第三方框架是开源的吗?您可能应该下载源代码,将其包含在您的项目中,并在每次构建项目时编译它,这样您就不会遇到此类问题..

【讨论】:

  • @onkar 如您所见,它只有 ARM 二进制文件,如果不重新编译该框架,您将无法在模拟器上运行它,这是您的全部问题。
  • 谢谢。那么我可以将应用程序直接部署到 iPhone 上吗?
  • @onkar 如果你能这样做,是的.. 不过你需要一个开发者帐户。
【解决方案2】:

我认为您的ViewController.m 没有添加到build phases 中的target's compiled sources 中。

更新 1:将“仅构建活动架构”设置为是。

Target --> Build Settings

更新 2:检查您是否没有写过#import "ViewController.m"。 !!

【讨论】:

  • 我已将Build Active Architectures Only 设置为yes 但仍然是同样的问题
猜你喜欢
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
相关资源
最近更新 更多