导入第三方项目时链接器错误

时间:2012-12-11 12:11:43

标签: iphone objective-c ios linker

我正在导入第三方项目,该项目有自己的框架。我想研究那个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'命令
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

2 个答案:

答案 0 :(得分:2)

看起来框架只针对ARM编译,而不是针对英特尔(i386)编译。尝试在iPhone上运行它,看看会发生什么......

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

答案 1 :(得分:1)

我认为您的ViewController.m未添加到target's的{​​{1}} compiled source中。

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

build phases - > Target

更新2:检查您是否写过Build Settings。 !!