Я пытаюсь использовать библиотеку, которую я скомпилировал в приложении для iOS. Библиотека Tesseract OCR lib. Кажется, что компиляция (и ее зависимости) прошла нормально.
Однако, когда я пытаюсь создать ссылку на эту библиотеку в своем проекте приложения, приложение не может установить связь. Ошибки ссылки удивляют меня; Кажется, что есть проблемы с вещами Тессеракта, находящими довольно стандартные вещи C ++.
Любые предложения о том, что я могу делать неправильно, были бы наиболее полезными.
Вот фрагмент вида ошибок ссылок, которые я вижу.
Undefined symbols for architecture armv7:
"std::string::find_last_of(char const*, unsigned long) const", referenced from:
tesseract::WordSizeModel::Init(std::string const&, std::string const&) in libtesseract.a(word_size_model.o)
"std::string::find_first_of(std::string const&, unsigned long) const", referenced from:
tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::find_first_not_of(std::string const&, unsigned long) const", referenced from:
tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::data() const", referenced from:
tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::find(char, unsigned long) const", referenced from:
tesseract::TessLangModel::IsLeadingPunc(int) in libtesseract.a(tess_lang_model.o)
Спасибо всем за ваши ответы. Я выяснил, в чем заключалась моя конкретная проблема, поэтому поделюсь ею здесь, если кто-нибудь еще ударит.
Моя проблема заключалась в настройке проекта. В разделе «Apple LLVM Compiler 5.0 — Язык — C ++» есть параметр «Стандартная библиотека C ++». Его значение необходимо изменить на «Compiler Default».
Несколько часов впустую, но проблема решена!
Я использую более новую версию iOS SDK и установил «Настройки сборки> Apple LLVM 5.0 — Язык — C ++> C ++ стандартная библиотека» на «Compiler Default», но получил 46 ошибок компиляции.
Я избавился от ошибок, установив его в «libstdc ++ (стандартная библиотека GNU C ++)».
Надеюсь, это поможет любому, кто застрял при использовании «Compiler Default».
Не уверен, что это кому-нибудь поможет, но у меня была такая же проблема, когда у меня был проект, связанный с другими проектами, когда у одного был базовый SDK 5.1, а у другого базовый SDK 7.0.
Возможно, у вас нет SDK для архитектуры armv7, поэтому вы можете скомпилировать код, но стандартные компоненты C ++, установленные на вашем компьютере, предназначены для другой архитектуры (например, x86), и ваш компоновщик не может найти библиотеки, необходимые для этой архитектуры.
Ошибка ссылки указывает на то, что библиотека c ++ не может быть найдена в пути. Без дополнительной информации я бы предложил проверить правильность пути к библиотеке c ++.