мне нужно Основные аудио классы утилит для моего приложения, но каждый раз, когда я добавляю файлы в свой проект, TagLib выходит из строя. Все они на C ++, которые, как я думал, могут вызывать проблемы при смешивании с Obj-C, но даже когда я только добавляю файлы, нигде не связывая их, я получаю одинаковые ошибки компиляции.
Вы знаете, в чем может быть проблема? Как я могу отладить это?
Вот некоторые из ошибок компоновщика:
Undefined symbols for architecture x86_64:
"std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long, unsigned long) const", referenced from:
TagLib::String::find(TagLib::String const&, int) const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
"std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::rfind(wchar_t const*, unsigned long, unsigned long) const", referenced from:
TagLib::String::rfind(TagLib::String const&, int) const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
"std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_leak_hard()", referenced from:
TagLib::String::String(std::string const&, TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::prepare(TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::String(std::string const&, TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::String(char const*, TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::String(TagLib::ByteVector const&, TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::to8Bit(bool) const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::begin() in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
...
"std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)", referenced from:
TagLib::String::~String() in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::String(wchar_t const*, TagLib::String::Type) in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::~String() in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::~String() in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::startsWith(TagLib::String const&) const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::substr(unsigned int, unsigned int) const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
TagLib::String::upper() const in GStreamer(libtag_a_x86_64_-tstring.cpp.o)
"std::ios_base::Init::Init()", referenced from:
__GLOBAL__I_a in GStreamer(libgsttaglib_a_x86_64_-libgsttaglib_la-gstapev2mux.o)
__GLOBAL__I_a in GStreamer(libgsttaglib_a_x86_64_-libgsttaglib_la-gstid3v2mux.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-tbytevector.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-tstringlist.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-apetag.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-id3v2framefactory.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-commentsframe.cpp.o)
...
"std::ios_base::Init::~Init()", referenced from:
__GLOBAL__I_a in GStreamer(libgsttaglib_a_x86_64_-libgsttaglib_la-gstapev2mux.o)
__GLOBAL__I_a in GStreamer(libgsttaglib_a_x86_64_-libgsttaglib_la-gstid3v2mux.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-tbytevector.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-tstringlist.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-apetag.cpp.o)
__GLOBAL__I_a in GStreamer(libtag_a_x86_64_-id3v2framefactory.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Нашел мой ответ в эта почта. Нужно было только переключить стандартную библиотеку C ++ на libstdc ++ в настройках сборки. Работает отлично сейчас.