为 iPhone 设备构建时 xcode 静态库链接错误

Posted

技术标签:

【中文标题】为 iPhone 设备构建时 xcode 静态库链接错误【英文标题】:xcode static library link error while building for iPhone device 【发布时间】:2013-02-06 05:31:52 【问题描述】:

我使用的是 xcode 4.6。 SDK 为 ios 6.1。我得到的错误是“Undefined symbols for architecture armv7”,而项目链接我自己创建的静态库,称为“libEncrypt.a”。

我确信我已经使用架构 armv7 创建了 libEncrpt.a。使用“otool -a”验证静态库,它显示以下消息。不明白为什么 xcode sill 会抱怨 "Undefined symbols for architecture 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)

【问题讨论】:

你能显示整个错误信息吗?您是否链接到任何其他库? 详细错误消息:架构 armv7 的未定义符号:“_OBJC_CLASS_$_libEncrypt”,引用自:LoginViewController.o 中的 objc-class-ref SignupViewController.o ld 中的 objc-class-ref:符号(s ) 未找到架构 armv7 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 我认为我没有链接到其他库。 lib“libEncrypt.a”显示在“project>Building Phases>Link Binary With Libraries”中。 【参考方案1】:

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

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

【讨论】:

以上是关于为 iPhone 设备构建时 xcode 静态库链接错误的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 成功构建,但不复制到 iOS 设备,并立即终止调试器

Xcode 9 布局:有没有办法为 iPad 构建一个与 iPhone 相同内容的新故事板?

在拒绝 Codesign 访问钥匙串后,Xcode 不会让为设备构建

React Native - 在真实设备上构建时出现 XCode 错误?

连接 iPhone 以在 Xcode 中处理后没有设备日志输出

为 iOS 编译 Flutter 项目时的 Xcode 构建问题