我一直在拉我的頭髮,試圖將我的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