resueltos - Problemas de vinculación de C++, parece que no puedo vincularme con las cosas estándar de C++
funciones en c++ pdf (5)
El error de enlace sugiere que la biblioteca c ++ no se puede encontrar en la ruta. Sin más información, sugeriría verificar que la ruta a la biblioteca de C ++ sea correcta.
Intento utilizar una biblioteca que he compilado en una aplicación de iOS. La biblioteca es Tesseract OCR lib. Parece que compilar eso (y sus dependencias) han ido bien.
Sin embargo, cuando trato de vincularme con esta lib en mi proyecto de aplicación, la aplicación no puede vincular. Los errores de enlace me sorprenden; parece que hay problemas con las cosas de Tesseract que encuentran cosas C ++ bastante estándar.
Cualquier sugerencia sobre lo que podría estar haciendo mal sería de gran ayuda.
Aquí hay un fragmento del tipo de errores de enlace que estoy viendo.
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)
Tal vez no tenga SDK para la arquitectura armv7, por lo que puede compilar su código, pero las cosas estándar de C ++ instaladas en su computadora son para otra arquitectura (por ejemplo, x86) y su enlazador no puede encontrar las bibliotecas que requieren esta arquitectura
Estoy usando una versión más reciente del SDK de iOS y configuré "Configuraciones de compilación> Apple LLVM 5.0 - Idioma - C ++> biblioteca estándar de C ++" en "Compilador predeterminado" pero obtuve 46 errores de compilación.
Me deshice de los errores al configurarlo en "libstdc ++ (biblioteca estándar GNU C ++)".
Esperemos que esto ayude a cualquiera que se quede atascado al usar "Compiler Default".
No estoy seguro si esto ayudará a alguien, pero tuve el mismo problema cuando tuve un proyecto vinculado con otros proyectos cuando uno tenía Base SDK como 5.1 y el otro tenía Base SDK de 7.0.
Gracias a todos por sus respuestas. Descubrí cuál era mi problema en particular, así que lo compartiré aquí en caso de que alguien más lo golpee.
Mi problema era una configuración de compilación de proyecto. En "Apple LLVM Compiler 5.0 - Language - C ++" hay una configuración para "C ++ standard library". Su valor debe cambiarse a "Valor predeterminado del compilador".
Varias horas perdidas, pero problema resuelto!