linker — проблемы со связыванием в C ++

Я пытаюсь использовать библиотеку, которую я скомпилировал в приложении для 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)

20

Решение

Спасибо всем за ваши ответы. Я выяснил, в чем заключалась моя конкретная проблема, поэтому поделюсь ею здесь, если кто-нибудь еще ударит.

Моя проблема заключалась в настройке проекта. В разделе «Apple LLVM Compiler 5.0 — Язык — C ++» есть параметр «Стандартная библиотека C ++». Его значение необходимо изменить на «Compiler Default».

Несколько часов впустую, но проблема решена!

28

Другие решения

Я использую более новую версию iOS SDK и установил «Настройки сборки> Apple LLVM 5.0 — Язык — C ++> C ++ стандартная библиотека» на «Compiler Default», но получил 46 ошибок компиляции.

Я избавился от ошибок, установив его в «libstdc ++ (стандартная библиотека GNU C ++)».

Надеюсь, это поможет любому, кто застрял при использовании «Compiler Default».

8

Не уверен, что это кому-нибудь поможет, но у меня была такая же проблема, когда у меня был проект, связанный с другими проектами, когда у одного был базовый SDK 5.1, а у другого базовый SDK 7.0.

1

Возможно, у вас нет SDK для архитектуры armv7, поэтому вы можете скомпилировать код, но стандартные компоненты C ++, установленные на вашем компьютере, предназначены для другой архитектуры (например, x86), и ваш компоновщик не может найти библиотеки, необходимые для этой архитектуры.

0

Ошибка ссылки указывает на то, что библиотека c ++ не может быть найдена в пути. Без дополнительной информации я бы предложил проверить правильность пути к библиотеке c ++.

-1
По вопросам рекламы [email protected]