2015-05-03 2 views
0

Мне нужно Core Audio Utility Classes для моего приложения, но каждый раз, когда я добавляю файлы в свой проект, TagLib идет haywire. Все они C++, которые, как я думал, могут вызвать проблемы с Obj-C, но даже когда я только добавляю файлы, не связывая их нигде, я получаю те же ошибки компиляции.(GStreamer) Как я могу заставить классы утилиты Taglib и Core Audio работать вместе?

Знаете ли вы, что может быть проблемой? Как я могу отладить это?

Вот некоторые ошибки компоновщика:

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) 

ответ

0

Найдено мой ответ в this post. Только для того, чтобы переключить стандартную библиотеку C++ на libstdC++ в настройках сборки. Прекрасно работает.