3

我正在导入一个第三方项目,它有自己的框架。我希望研究那个 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
4

2 回答 2

2

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

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

于 2012-12-11T12:15:12.427 回答
1

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

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

Target-->Build Settings

更新 2:检查您是否未编写#import "ViewController.m". !!

于 2012-12-11T12:16:44.203 回答