我一直在拉我的头发,试图将我的iOS应用程序与arm64库链接。图书馆无法为特定体系结构链接的可能原因?
有问题的库是Crypto ++。我试过了wiki中的预编译fat库:http://www.cryptopp.com/wiki/IOS_(Command_Line)。我试过编译库自己,但我不断收到以下类型的链接错误:
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long, unsigned long)", referenced from:
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libcryptopp.a(randpool.o)
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char const*) in libcryptopp.a(modes.o)
的libcryptopp.a似乎是罚款的ARMv7,但不适合arm64出于某种原因。如果我从链接过程中排除libcryptopp.a的64位版本,则会产生更多错误。
他们都使用-stdlib汇编= ++的libstdc
这是怎么回事?
(我需要的,因为TWEAK发展的原因arm64支持)
更新对不起所有的 - 事实证明它是使用旧libcryptopp.a,而无法正常找到libcryptopp.a。 .a源自其他地方,已经修复。
在'libC++'命名空间中找到用于连接字符串的'+运算符'时遇到问题..您需要链接到libC++。 '-stdlib = libC++'NOT'-stdlib = libstdC++'我知道它看起来像一个小细节,但它发生的事情比它应该的多得多。 – Brandon
@CantChooseUsernames但指令说-stdlib = libstdC++,并且在使用libstdC++编译库时不会与libC++链接导致错误? – kamziro
你不是在建造它吗?也许你也可以直接链接到它,看看会发生什么。为什么要使用'-stdlib = libC++':http://stackoverflow.com/questions/16352833/linking-with-clang-on-os-x-generates-lots-of-symbol-not-found-errors和http://stackoverflow.com/questions/9000816/libc-stop-std-renaming-to-std-1 – Brandon