【问题标题】:(GStreamer) How can I get Taglib and Core Audio Utility Classes to work together?(GStreamer) 如何让 Taglib 和核心音频实用程序类一起工作?
【发布时间】:2015-05-03 04:36:09
【问题描述】:

我的应用程序需要Core Audio Utility Classes,但每次我将文件添加到我的项目 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++ ios gstreamer taglib


    【解决方案1】:

    this post 找到我的答案。只需在构建设置中将 C++ 标准库切换到 libstdc++。现在完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多