2014-12-11 3 views
0

У меня есть пример проекта, который включает статическую библиотеку под названием «libReaderFramework.a», которая компилируется и работает идеально, когда главный проект (проект, включающий статическую библиотеку) имеет целевую iOS 6 или ниже. Но если я поставил цель прошивкой 7 или выше этих ошибок:Ошибка при использовании статической библиотеки с iOS 7 или выше

Undefined symbols for architecture armv7: 
    "std::_List_node_base::hook(std::_List_node_base*)", referenced from: 
     std::list<uft::Value*, std::allocator<uft::Value*> >::_M_insert(std::_List_iterator<uft::Value*>, uft::Value* const&) in libReaderFramework.a(xpath_yacc.o) 
    "std::__throw_length_error(char const*)", referenced from: 
     std::vector<empdf::PDFDocument::pdfPageCacheEntry, std::allocator<empdf::PDFDocument::pdfPageCacheEntry> >::_M_insert_aux(__gnu_cxx::__normal_iterator<empdf::PDFDocument::pdfPageCacheEntry*, std::vector<empdf::PDFDocument::pdfPageCacheEntry, std::allocator<empdf::PDFDocument::pdfPageCacheEntry> > >, empdf::PDFDocument::pdfPageCacheEntry const&) in libReaderFramework.a(embed_pdf_t3.o) 
     std::deque<mdom::Node, std::allocator<mdom::Node> >::_M_new_elements_at_back(unsigned long) in libReaderFramework.a(xpath_context.o) 
     std::deque<mdom::Node, std::allocator<mdom::Node> >::_M_new_elements_at_front(unsigned long) in libReaderFramework.a(xpath_context.o) 
     std::vector<empdf::CLayout::OpacityInfoRec, std::allocator<empdf::CLayout::OpacityInfoRec> >::_M_insert_aux(__gnu_cxx::__normal_iterator<empdf::CLayout::OpacityInfoRec*, std::vector<empdf::CLayout::OpacityInfoRec, std::allocator<empdf::CLayout::OpacityInfoRec> > >, empdf::CLayout::OpacityInfoRec const&) in libReaderFramework.a(embed_pdf_t3_layout.o) 
     std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<layout::AreaTreeNode**, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > >, layout::AreaTreeNode* const&) in libReaderFramework.a(layout_block.o) 
     std::vector<int, std::allocator<int> >::_M_insert_aux(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int const&) in libReaderFramework.a(layout_block.o) 
    "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from: 
     std::_Rb_tree_iterator<std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long> >::operator++() in libReaderFramework.a(embed_pdf_t3.o) 
     std::_Rb_tree_iterator<std::pair<uft::Value const, xpath::DynamicContext*> >::operator++() in libReaderFramework.a(xpath_context.o) 
     std::_Rb_tree_iterator<std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > >::operator++(int) in libReaderFramework.a(layout_block.o) 
     std::_Rb_tree_iterator<std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > >::operator++() in libReaderFramework.a(layout_block.o) 
     std::_Rb_tree_iterator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >::operator++(int) in libReaderFramework.a(layout_block.o) 
     std::_Rb_tree_iterator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >::operator++() in libReaderFramework.a(layout_block.o) 
    "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from: 
     std::_Rb_tree_iterator<std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long> >::operator--() in libReaderFramework.a(embed_pdf_t3.o) 
     std::_Rb_tree_iterator<std::pair<uft::Value const, xpath::DynamicContext*> >::operator--() in libReaderFramework.a(xpath_context.o) 
     std::_Rb_tree_iterator<std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > >::operator--() in libReaderFramework.a(layout_block.o) 
     std::_Rb_tree_iterator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >::operator--() in libReaderFramework.a(layout_block.o) 
    "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from: 
     std::_Rb_tree<tetraphilia::pdf::store::DictionaryKey, std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long>, std::_Select1st<std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long> >, tetraphilia::pdf::store::DictionaryKeyOrdering, std::allocator<std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<tetraphilia::pdf::store::DictionaryKey const, unsigned long> const&) in libReaderFramework.a(embed_pdf_t3.o) 
     std::_Rb_tree<uft::Value, std::pair<uft::Value const, xpath::DynamicContext*>, std::_Select1st<std::pair<uft::Value const, xpath::DynamicContext*> >, xpath::Context::ValueCompare, std::allocator<std::pair<uft::Value const, xpath::DynamicContext*> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<uft::Value const, xpath::DynamicContext*> const&) in libReaderFramework.a(xpath_context.o) 
     std::_Rb_tree<int, std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > >, std::_Select1st<std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > >, std::less<int>, std::allocator<std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<int const, std::vector<layout::AreaTreeNode*, std::allocator<layout::AreaTreeNode*> > > const&) in libReaderFramework.a(layout_block.o) 
     std::_Rb_tree<layout::ContainerNode*, std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> >, std::_Select1st<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >, std::less<layout::ContainerNode*>, std::allocator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > const&) in libReaderFramework.a(layout_block.o) 
    "std::string::append(std::string const&)", referenced from: 
     std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libReaderFramework.a(curlnetprovider.o) 
    "std::string::append(char const*)", referenced from: 
     std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libReaderFramework.a(curlnetprovider.o) 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()", referenced from: 
     DLProxyInfo::DLProxyInfo(DLProxyInfo const&) in libReaderFramework.a(DLProxyInfo.o) 
     DLProxySettingsController::getSystemProxySettings() in libReaderFramework.a(DLProxySettingsController.o) 
    "std::string::empty() const", referenced from: 
     NSStringFromString(std::string const&) in libReaderFramework.a(DLHelpers.o) 
     CurlStream::CurlStream(dp::String const&, dp::String const&, dpio::StreamClient*, dpio::Stream*, bool) in libReaderFramework.a(curlnetprovider.o) 
     DLProxySettingsController::getSystemProxySettings() in libReaderFramework.a(DLProxySettingsController.o) 
     DLProxySettingsController::updateProxyCredentials(std::string const&, std::string const&, std::string const&) in libReaderFramework.a(DLProxySettingsController.o) 
    "std::allocator<char>::allocator()", referenced from: 
     GetStringFromCFString(__CFString const*) in libReaderFramework.a(DLHelpers.o) 
     StringFromNSString(NSString*) in libReaderFramework.a(DLHelpers.o) 
     DLProxyInfo::DLProxyInfo() in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::DLProxyInfo(std::string const&, int, bool, std::string const&, std::string const&, bool) in libReaderFramework.a(DLProxyInfo.o) 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from: 
     GetStringFromCFString(__CFString const*) in libReaderFramework.a(DLHelpers.o) 
     StringFromNSString(NSString*) in libReaderFramework.a(DLHelpers.o) 
     DLProxyInfo::DLProxyInfo() in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::DLProxyInfo(std::string const&, int, bool, std::string const&, std::string const&, bool) in libReaderFramework.a(DLProxyInfo.o) 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from: 
     DLProxyInfo::DLProxyInfo(std::string const&, int, bool, std::string const&, std::string const&, bool) in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::getHostName() in libReaderFramework.a(curlnetprovider.o) 
     DLProxyInfo::getUsername() in libReaderFramework.a(curlnetprovider.o) 
     DLProxyInfo::getPassword() in libReaderFramework.a(curlnetprovider.o) 
     std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libReaderFramework.a(curlnetprovider.o) 
     std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libReaderFramework.a(curlnetprovider.o) 
    "std::ios_base::Init::Init()", referenced from: 
     ___cxx_global_var_init in libReaderFramework.a(RMDocumentHost.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLNetworkProxySettings.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLHelpers.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxySupport.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxyInfo.o) 
     ___cxx_global_var_init in libReaderFramework.a(curlnetprovider.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxySettingsController.o) 
     ... 
    "std::string::operator=(std::string const&)", referenced from: 
     GetStringFromCFString(__CFString const*) in libReaderFramework.a(DLHelpers.o) 
     DLProxyInfo::setHostName(std::string const&) in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::setAutoURL(std::string const&) in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::setUsername(std::string const&) in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::setPassword(std::string const&) in libReaderFramework.a(DLProxyInfo.o) 
     GetProxyUserCredentials(std::string const&, std::string&, std::string&) in libReaderFramework.a(DLProxyCredentialStorage.o) 
    "std::allocator<char>::~allocator()", referenced from: 
     GetStringFromCFString(__CFString const*) in libReaderFramework.a(DLHelpers.o) 
     StringFromNSString(NSString*) in libReaderFramework.a(DLHelpers.o) 
     DLProxyInfo::DLProxyInfo() in libReaderFramework.a(DLProxyInfo.o) 
     DLProxyInfo::DLProxyInfo(std::string const&, int, bool, std::string const&, std::string const&, bool) in libReaderFramework.a(DLProxyInfo.o) 
    "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from: 
     RMDocumentHostImpl::reportLoadingState(int) in libReaderFramework.a(RMDocumentHost.o) 
    "std::cout", referenced from: 
     RMDocumentHostImpl::reportLoadingState(int) in libReaderFramework.a(RMDocumentHost.o) 
    "std::ios_base::Init::~Init()", referenced from: 
     ___cxx_global_var_init in libReaderFramework.a(RMDocumentHost.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLNetworkProxySettings.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLHelpers.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxySupport.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxyInfo.o) 
     ___cxx_global_var_init in libReaderFramework.a(curlnetprovider.o) 
     ___cxx_global_var_init in libReaderFramework.a(DLProxySettingsController.o) 
     ... 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from: 
     +[DLNetworkProxySettings systemProxySettings] in libReaderFramework.a(DLNetworkProxySettings.o) 
     +[DLNetworkProxySettings authenticationInfoAvailable] in libReaderFramework.a(DLNetworkProxySettings.o) 
     +[DLNetworkProxySettings saveProxyCredentials:] in libReaderFramework.a(DLNetworkProxySettings.o) 
     +[DLNetworkProxySettings clearProxyCredentials:] in libReaderFramework.a(DLNetworkProxySettings.o) 
     GetStringFromCFString(__CFString const*) in libReaderFramework.a(DLHelpers.o) 
     UpdateSystemProxyCredentials(DLProxyInfo) in libReaderFramework.a(DLProxySupport.o) 
     DLProxyInfo::DLProxyInfo() in libReaderFramework.a(DLProxyInfo.o) 
     ... 
    "std::string::c_str() const", referenced from: 
     NSStringFromString(std::string const&) in libReaderFramework.a(DLHelpers.o) 
     CurlStream::CurlStream(dp::String const&, dp::String const&, dpio::StreamClient*, dpio::Stream*, bool) in libReaderFramework.a(curlnetprovider.o) 
     GetProxyUserCredentials(std::string const&, std::string&, std::string&) in libReaderFramework.a(DLProxyCredentialStorage.o) 
     SaveProxyUserCredentials(std::string const&, std::string const&, std::string const&) in libReaderFramework.a(DLProxyCredentialStorage.o) 
     ClearProxyUserCredentials(std::string const&) in libReaderFramework.a(DLProxyCredentialStorage.o) 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     RMDocumentHostImpl::reportLoadingState(int) in libReaderFramework.a(RMDocumentHost.o) 
    "std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from: 
     std::_Rb_tree<uft::Value, std::pair<uft::Value const, xpath::DynamicContext*>, std::_Select1st<std::pair<uft::Value const, xpath::DynamicContext*> >, xpath::Context::ValueCompare, std::allocator<std::pair<uft::Value const, xpath::DynamicContext*> > >::erase(std::_Rb_tree_iterator<std::pair<uft::Value const, xpath::DynamicContext*> >) in libReaderFramework.a(xpath_context.o) 
     std::_Rb_tree<layout::ContainerNode*, std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> >, std::_Select1st<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >, std::less<layout::ContainerNode*>, std::allocator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > > >::erase(std::_Rb_tree_iterator<std::pair<layout::ContainerNode* const, layout::AbsoluteVector<layout::AbsoluteItemInfo> > >) in libReaderFramework.a(layout_block.o) 
    "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from: 
     RMDocumentHostImpl::reportLoadingState(int) in libReaderFramework.a(RMDocumentHost.o) 
ld: symbol(s) not found for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

У меня есть код этой статической библиотеки, а также я произвожу, но я не знаю, почему я должен иметь цель IOS 6 или ниже, чтобы использовать статическую библиотеку. (У меня есть статическая библиотека в качестве подпроекта основного проекта)

ответ

0

Похоже, что libReaderFramework.a построен для использования libstdC++ в качестве стандартной библиотеки C++. Когда вы строите свой основной проект, выбор стандартной библиотеки, возможно, по умолчанию используется для libC++ для более новых целей.

Вы должны сделать последовательный выбор для использования.

(можно связать против обоих, но это раздражает и хрупкими.)

+0

Спасибо за ответ, у вас есть и идея, как сделать это? показать, что я меняю libstdC++? – Gabox

+0

Если все это под вашим контролем, я предлагаю переместить все на libC++ в качестве стандарта для .a и основного проекта. (Если вам не нужно поддерживать слишком старые версии Xcode, и в этом случае вам может потребоваться создать разные файлы .a) Если вы используете «std» для фильтрации настроек сборки, вы должны увидеть, где выбрана стандартная библиотека , –

+0

Да, это под моим контролем, я изменю его сейчас, и я дам вам знать – Gabox