【发布时间】:2015-03-18 14:08:31
【问题描述】:
我构建了用于 ios 应用程序的 cryptopp 库。但不工作,只告诉我
“架构 x86_64 的未定义符号:
“CryptoPP::ProxyFilter::IsolatedFlush(bool, bool)”,引用自:“
不断……
我遵循 Crypopp wiki 页面的指南,但它仍然崩溃。
我该如何解决这个问题?
ld:警告:忽略文件 [路径]/libcryptopp.a,缺少必需的 文件 [path]/libcryptopp.a 中的架构 x86_64(4 slices)CryptoPP::ProxyFilter::IsolatedFlush(bool, bool)", 引用 来自:…………(118件事)
我尝试使用github's prebuilt cryptopp 构建,但它也不起作用。它会出现如下错误:
架构 arm64 的未定义符号: “CryptoPP::BufferedTransformation::ChannelFlush(std::string const&, bool, int, bool)”,引用自:
vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::Filter::CopyRangeTo2(CryptoPP::BufferedTransformation&, unsigned long long&, unsigned long long, std::string const&, bool) const”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::Filter::TransferTo2(CryptoPP::BufferedTransformation&, unsigned long long&, std::string const&, bool)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::BufferedTransformation::ChannelPut2(std::string const&, unsigned char const*, unsigned long, int, bool)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::BufferedTransformation::ChannelCreatePutSpace(std::string const&, unsigned long&)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::BufferedTransformation::ChannelPutModifiable2(std::string const&, unsigned char*, unsigned long, int, bool)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::BufferedTransformation::ChannelMessageSeriesEnd(std::string const&, int, bool)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::BufferedTransformation::SetRetrievalChannel(std::string const&)”,引用自:
vtable for CryptoPP::Base64Decoder in MYCLASSBBB.o vtable for CryptoPP::Unflushable<CryptoPP::Filter> in MYCLASSBBB.o vtable for CryptoPP::SimpleProxyFilter in MYCLASSBBB.o vtable for CryptoPP::Bufferless<CryptoPP::Filter> in MYCLASSBBB.o“CryptoPP::StringSinkTemplate::StringSinkTemplate(std::string&)”,引用自:
encryptString(std::string const&) in MYCLASSBBB.o decryptString(std::string const&, int) in MYCLASSBBB.o MYCLASSAAA::setDeviceId() in MYCLASSAAA.o MYCLASSAAA::getSignature() in MYCLASSAAA.old:未找到架构 arm64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
MYCLASSAAA 和 MYCLASSBBB 都是使用 cryptopp 库的类。
我会尝试自己构建库,但我认为可能会发生同样的错误。我想做什么?
和项目设置——我没有在“Apple LLVM 6.0 - 语言”中将“编译源为”更改为 Objective-C++,我只是将其设置为“根据文件类型”。它必须是objective-c++?当我改变它时,它在另一个来源中发生了太多错误。因为它是 cocos2d-x(0.12.0 / c++ 项目) 的遗留项目...
我希望你的帮助。谢谢。
【问题讨论】:
-
在模拟器和设备上运行时是否都出现过?
-
@user523234 ya 出现在任何目标中
-
“架构 x86_64 的未定义符号” - 听起来您的应用程序是为 x86_64 构建的,而不是 iOS 架构(如 armv7 或 arm64)。
lipo为您的图书馆报告了什么:xcrun -sdk iphoneos lipo -info libcryptopp.a? -
@jww iPhone 6 模拟器正在使用 x86_64。我使用正确的设置重新构建了该库,并且忽略了文件警告消失了。但它仍然告诉我“架构 x86_64 的未定义符号”。
-
@jww 我的库是 [ 胖文件中的体系结构:libcryptopp.a 是:x86_64 i386 ]
标签: ios ios-simulator crypto++