Проблема связывания в Xcode при использовании зависимого подпроекта - PullRequest
4 голосов
/ 18 февраля 2011

Я использую Xcode для написания проекта iPhone и использую внешнюю библиотеку.Я добавил файл проекта Xcode в родительскую цель, скорректировал путь поиска заголовка и установил его как прямую зависимость в цели сборки родителя.

Теперь происходит странная вещь: я могу открыть библиотеку и скомпилировать ее безпроблемы.Библиотека ссылается на некоторые фреймворки, например AVFoundation.framework.

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

Undefined symbols:
  "_AVCaptureSessionPresetMedium", referenced from:
      _AVCaptureSessionPresetMedium$non_lazy_ptr in libZXingWidget.a(ZXingWidgetController.o)
     (maybe you meant: _AVCaptureSessionPresetMedium$non_lazy_ptr)
  "_CVPixelBufferGetHeight", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_CVPixelBufferLockBaseAddress", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_AudioServicesPlaySystemSound", referenced from:
      -[ZXingWidgetController presentResultForString:] in libZXingWidget.a(ZXingWidgetController.o)
  "_AudioServicesCreateSystemSoundID", referenced from:
      -[ZXingWidgetController viewWillAppear:] in libZXingWidget.a(ZXingWidgetController.o)
  "_CVPixelBufferUnlockBaseAddress", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_CVPixelBufferGetBaseAddress", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_CVPixelBufferGetBytesPerRow", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_iconv_close", referenced from:
      zxing::qrcode::DecodedBitStreamParser::append(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned char const*, unsigned long, char const*)in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
      zxing::qrcode::DecodedBitStreamParser::append(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned char const*, unsigned long, char const*)in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
  "_OBJC_CLASS_$_AVCaptureVideoPreviewLayer", referenced from:
      objc-class-ref-to-AVCaptureVideoPreviewLayer in libZXingWidget.a(ZXingWidgetController.o)
  "_iconv", referenced from:
      zxing::qrcode::DecodedBitStreamParser::append(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned char const*, unsigned long, char const*)in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
  "_OBJC_CLASS_$_AVCaptureSession", referenced from:
      objc-class-ref-to-AVCaptureSession in libZXingWidget.a(ZXingWidgetController.o)
  "_OBJC_CLASS_$_AVCaptureDevice", referenced from:
      objc-class-ref-to-AVCaptureDevice in libZXingWidget.a(ZXingWidgetController.o)
  "_kCVPixelBufferPixelFormatTypeKey", referenced from:
      _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr in libZXingWidget.a(ZXingWidgetController.o)
     (maybe you meant: _kCVPixelBufferPixelFormatTypeKey$non_lazy_ptr)
  "_OBJC_CLASS_$_AVCaptureVideoDataOutput", referenced from:
      objc-class-ref-to-AVCaptureVideoDataOutput in libZXingWidget.a(ZXingWidgetController.o)
  "_CVPixelBufferGetWidth", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_AudioServicesDisposeSystemSoundID", referenced from:
      -[ZXingWidgetController dealloc] in libZXingWidget.a(ZXingWidgetController.o)
  "_OBJC_CLASS_$_AVCaptureDeviceInput", referenced from:
      objc-class-ref-to-AVCaptureDeviceInput in libZXingWidget.a(ZXingWidgetController.o)
  "_AVLayerVideoGravityResizeAspectFill", referenced from:
      _AVLayerVideoGravityResizeAspectFill$non_lazy_ptr in libZXingWidget.a(ZXingWidgetController.o)
     (maybe you meant: _AVLayerVideoGravityResizeAspectFill$non_lazy_ptr)
  "_CMSampleBufferGetImageBuffer", referenced from:
      -[ZXingWidgetController captureOutput:didOutputSampleBuffer:fromConnection:] in libZXingWidget.a(ZXingWidgetController.o)
  "_iconv_open", referenced from:
      zxing::qrcode::DecodedBitStreamParser::append(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned char const*, unsigned long, char const*)in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
  "_AVMediaTypeVideo", referenced from:
      _AVMediaTypeVideo$non_lazy_ptr in libZXingWidget.a(ZXingWidgetController.o)
     (maybe you meant: _AVMediaTypeVideo$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Я могу включить необходимые рамки в родительский проект, но я подумал, что, включив рамкив проекте библиотеки связывание будет нормальным.

Мой вопрос: Нужно ли включать все каркасы, которые мои зависимые подпроекты используют в родительском проекте, чтобы обеспечить правильное связывание, илиЯ что-то не так делаю?

Спасибо за помощь.

Ответы [ 2 ]

9 голосов
/ 29 июля 2013

убедитесь, что включены «CoreMedia.framework», «AudioToolbox.framework», «CoreGraphics.framework», «CoreVideo.framework», «AVFoundation.framework», «libiconv.dylib» рамки в проекте в фазе сборки

3 голосов
/ 18 февраля 2011

Если подпроект компилируется в статическую библиотеку, да.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...