gpt4 book ai didi

ios - 使用自定义 cocoapod 会出现编译错误(架构 armv7 的 undefined symbol :)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:22 25 4
gpt4 key购买 nike

我为自己的内部使用构建了自己的 pod。 pod spec lint 工作正常,但当我尝试实际使用它时,它给了我以下编译错误:

Undefined symbols for architecture armv7:
"___gxx_personality_sj0", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"vtable for __cxxabiv1::__class_type_info", referenced from:
typeinfo for CAXException in libPods.a(ExtAudioFileConvert.o)
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"std::__throw_bad_alloc()", referenced from:
std::_Vector_base<AudioBufferList*, std::allocator<AudioBufferList*> >::_M_allocate(unsigned long) in libPods.a(ExtAudioFileConvert.o)
"CAStreamBasicDescription::CAStreamBasicDescription()", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"___cxa_allocate_exception", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"___cxa_throw", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"operator new[](unsigned long)", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"___cxa_begin_catch", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"operator new(unsigned long)", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
std::_Vector_base<AudioBufferList*, std::allocator<AudioBufferList*> >::_M_allocate(unsigned long) in libPods.a(ExtAudioFileConvert.o)
"std::__throw_length_error(char const*)", referenced from:
std::vector<AudioBufferList*, std::allocator<AudioBufferList*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<AudioBufferList**, std::vector<AudioBufferList*, std::allocator<AudioBufferList*> > >, AudioBufferList* const&) in libPods.a(ExtAudioFileConvert.o)
"___cxa_free_exception", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"_OBJC_CLASS_$_MPMusicPlayerController", referenced from:
objc-class-ref in libPods.a(AudioManager.o)
"___cxa_end_catch", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"std::terminate()", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
"operator delete(void*)", referenced from:
_GetConvertedData in libPods.a(ExtAudioFileConvert.o)
std::vector<AudioBufferList*, std::allocator<AudioBufferList*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<AudioBufferList**, std::vector<AudioBufferList*, std::allocator<AudioBufferList*> > >, AudioBufferList* const&) in libPods.a(ExtAudioFileConvert.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我怀疑 podspec 中的框架设置不正确,因为这是我编写的第一个 pod,我可能在那里有一些错误。

提前致谢。

最佳答案

正式回答我发布的问题。我需要执行以下操作来修复它:

  • 链接 C++ 标准库:(感谢@H2CO3)
    • s.library = 'stdc++' 添加到 podspec
  • 链接 MediaPlayer 框架:(感谢@H2CO3)
    • s.frameworks = 'MediaPlayer' 添加到 podspec
  • CAStreamBasicDescription 的问题已通过以下答案修复:Trouble linking Tim Bolstad's Core Audio Example

关于ios - 使用自定义 cocoapod 会出现编译错误(架构 armv7 的 undefined symbol :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com