Подтвердить что ты не робот

Проблемы с компоновкой С++, похоже, я не могу связать со стандартными средствами С++

Я пытаюсь использовать библиотеку, которую я скомпилировал в приложении iOS. Библиотека представляет собой OCR lib Tesseract. Похоже, что компиляция (и ее зависимости) прошла нормально.

Однако, когда я пытаюсь связать эту lib в моем проекте приложения, приложение не связывается. Ошибки ссылок удивляют меня; кажется, что есть проблемы с материалом Tesseract, который находит довольно стандартный материал на С++.

Любые предложения о том, что я делаю неправильно, были бы наиболее полезными.

Вот фрагмент типа ошибок ссылок, которые я вижу.

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)
4b9b3361

Ответ 1

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

Моя проблема заключалась в установке проекта. В разделе "Apple LLVM Compiler 5.0 - Language - С++" есть параметр для "стандартной библиотеки С++". Его значение необходимо изменить на "По умолчанию компилятора".

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

Ответ 2

Я использую более новую версию SDK для iOS и устанавливаю "Настройки сборки > Apple LLVM 5.0 - Язык - С++ > Стандартная библиотека С++" в "По умолчанию компилятора", но получил 46 ошибок компиляции.

Я избавился от ошибок, установив его в "libstdС++ (стандартная библиотека GNU С++)".

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

Ответ 3

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

Ответ 4

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

Ответ 5

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