为 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 错误?