Ios XCode 6.4体系结构arm64的未定义符号

Ios XCode 6.4体系结构arm64的未定义符号,ios,static-libraries,armv7,arm64,xcode6.4,Ios,Static Libraries,Armv7,Arm64,Xcode6.4,我的项目中的生成设置: Architectures: armv7,arm64 Build Active architectures only: NO Valid Architectures: armv7 armv7s arm64 arm6 我下载了一个预构建版本的库,该库支持64位体系结构,我在以下帮助下通过终端验证: 输出: libcryptopp.a: Mach-O universal binary with 5 architectures libcryptopp.a (for arc

我的项目中的生成设置:

Architectures: armv7,arm64

Build Active architectures only: NO

Valid Architectures: armv7 armv7s arm64 arm6
我下载了一个预构建版本的库,该库支持64位体系结构,我在以下帮助下通过终端验证:

输出:

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帖子上的每一个答案,现在我无法解决这个问题,我必须尽快将我的应用提交到应用商店。有人能帮我吗


p.S将“构建活动体系结构”设置为“是”不会解决问题。

将体系结构设置更改为:


这可能是由于错误的构建脚本导致的,该脚本创建了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的提供商为您更正此问题。

当您看到编译器输出中的错误时,编译器会抱怨哪些符号未定义?您需要首先了解哪个库负责未定义的符号,然后可以在有问题的库中进行更多检查。“CryptoPP::IteratedHashBase::Update(unsigned char const*,unsigned long)”,引用自:vtable for CryptoPP::IteratedHashWithStaticTransform in CryptoppHash.oNops它不工作,顺便说一句,当所有内容都与我在设置中提到的相同时,为什么它会工作,除了从有效的arch中删除arm6 arch之外?在进行这些更改后是否清理了构建?它应该有用。。我的所有项目都有这种配置不,只是不同符号多次出现这种错误。看看是否有帮助。我甚至找不到CryptoPP.o文件,但源代码可用,我自己将这些文件转换为静态库Cool,那么,自己解决问题就容易多了。你已经试过Munahil给出的答案了吗?结果如何?不,它没有解决我在评论中提到的问题好的,不用担心,它会解决的。你能告诉我你从哪里下载图书馆资源的网址吗?我先自己试试。好的,我自己试过了,一切正常。所以,这里有一个清单要检查:1。更新builder.sh:
ARCHS=“i386 armv7 arm64”SDK\u VERSION=“8.4”
2。确保在Xcode项目中,所有使用libcryptopp功能的.m文件的文件扩展名都是.mm而不是.m,这确保这些文件编译为objective-C++。3.在构建设置中,确保体系结构是$(ARCHS_标准),有效的体系结构是arm64和armv7。4.C++语言的拨号应该是GNU++ 11,C++标准库应该是LBC++,试试这个,看看它现在是否工作。
Update
EnumToType