2013-08-26 3 views
2

Я построил свой собственный контейнер для собственного внутреннего использования. Капсула спецификация ворс работал нормально, но когда я пытался на самом деле использовать его, он дал мне следующие ошибки компиляции:Использование пользовательского cocoapod дает ошибки компиляции (Неопределенные символы для архитектуры armv7 :)

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, как это мой первый стручок писать и У меня, вероятно, есть несколько ошибок.

Заранее спасибо.

+0

Ссылки против: 1. C++ стандартной библиотеки, 2. рамок Core Audio, 3. Структура MediaPlayer. –

+0

Я добавил MediaPlayer и CoreAudio. Это уменьшило 18 ошибок до 17. Не уверен, как связать стандартную библиотеку C++. Посмотрел онлайн и нашел следующее, но это не помогло: s.xcconfig = {'CLANG_CXX_LIBRARY' => 'libstdC++'} – xemacobra

+0

, возможно, скомпилировать как C++ вместо C. '-lstdC++', должен выполнить задание в командной строке; Я не использую Xcode, поэтому я не знаю, как вы можете заставить его ссылаться на libstdC++. –

ответ

2

Официально отвечая на вопрос, который я разместил. Мне нужно сделать следующее, чтобы исправить это:

  • Свяжите C++ Стандартная библиотека: (Спасибо @ Н2СО3)
    • добавить s.library = 'stdc++' к podspec
  • Ссылка MediaPlayer рамочным: (Благодаря @ H2CO3)
    • добавить s.frameworks = 'MediaPlayer' в podspec
  • Проблема с CAStreamBasicDescription фиксировались после ответа: Trouble linking Tim Bolstad's Core Audio Example