0

在我的项目中构建设置:

Architectures: armv7,arm64

Build Active architectures only: NO

Valid Architectures: armv7 armv7s arm64 arm6

我从Marek Kotewicz 的 GitHub下载了该库的预构建版本,该版本支持 64 位架构,我在此链接的帮助下通过终端验证了该版本:

file libcryptopp.a

输出:

libcryptopp.a: Mach-O universal binary with 5 architectures
libcryptopp.a (for architecture i386):  current ar archive random library
libcryptopp.a (for architecture armv7): current ar archive random library
libcryptopp.a (for architecture armv7s):    current ar archive random library
libcryptopp.a (for architecture x86_64):    current ar archive random library
libcryptopp.a (for architecture arm64): current ar archive random library

我试图清理和构建项目,它导致项目中出现错误并显示一条消息

Undefined symbols for architecture arm64:

我已经尝试了 SO 帖子上的每一个答案,现在我无法解决这个问题,我必须尽快将我的应用程序提交到 App Store。有人可以帮助我吗?

PS 将 Build active architectures 设置为 YES 并不能解决问题。

4

2 回答 2

1

将您的架构设置更改为:

在此处输入图像描述

于 2015-08-10T16:59:21.797 回答
1

这很可能是由于错误的构建脚本创建了 libcryptopp.a 而没有为某些符号/对象提供正确的架构。您可以使用以下命令来验证这一点:

$ lipo -thin arm64 libcryptopp.a -output libcryptopp_arm64.a
$ mkdir objects
$ mv libcryptopp_arm64.a objects
$ cd objects
$ ar -x libcryptopp_arm64.a

在提取目标文件中找到 CryptoPP.o,然后在命令行中执行:

nm CryptoPP.o > CryptoPP_symbols.txt

在输出文件中,即 CryptoPP_symbols.txt,检查是否可以找到如下符号:

Update
EnumToType

我想你不会找到它们,因为这就是问题所在。如果您有 libcryptopp.a 的源代码,您应该会发现构建脚本有什么问题。如果您没有源代码,那么您能做的就非常有限,即请 libcryptopp.a 的提供者为您更正此问题。

于 2015-08-10T17:01:43.683 回答