Reputation: 1954
I built my own pod for my own internal usage. The pod spec lint worked fine but when I tried to actually use it, it gave me the following compile errors:
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)
I suspect the frameworks are not set properly in the podspec as this is my first pod to write and I probably have a few mistakes in there.
Thanks in advance.
Upvotes: 2
Views: 2949
Reputation: 1954
Officially answering the question I posted. I needed to do the following to fix it:
s.library = 'stdc++'
to the podspecs.frameworks = 'MediaPlayer'
to the podspecUpvotes: 2