3

我正在使用 xcode 4.6。SDK 为 iOS 6.1。在项目链接我自己创建的名为“libEncrypt.a”的静态库时,我得到的错误是 “架构 armv7 的未定义符号”。

我确信我已经使用架构 armv7 创建了 libEncrpt.a。使用“otool -a”验证静态库,它显示以下消息。不明白为什么 xcode sill 会抱怨“架构 armv7 的未定义符号”之类的错误?

> otool  -a libEncrypt.a 
Archive : libEncrypt.a (architecture armv7)
0100644 505/20    108 1360127518 #1/20
0100644 505/20   3604 1360127513 #1/20
Archive : libEncrypt.a (architecture armv7s)
0100644 505/20    108 1360127518 #1/20
0100644 505/20   3604 1360127513 #1/20

添加详细的错误消息:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_libEncrypt", referenced from:
      objc-class-ref in LoginViewController.o
      objc-class-ref in SignupViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

1 回答 1

2

仔细检查您的应用程序和静态库项目中的“仅构建活动架构”设置。

我遇到了同样的问题,因为我将静态库的“仅构建活动架构”设置为 YES,但对于我的 iOS 应用程序却没有。当 iOS 应用程序尝试进​​行 Debug 构建时,它期望所有架构都存在,但只为静态库构建了 armv7s,因为我正在部署到我的 iPhone 5。

于 2013-04-12T18:03:47.030 回答