iphone – 使用从属子项目时在Xcode中链接问题
发布时间:2020-12-14 18:13:15 所属栏目:百科 来源:网络整理
导读:我正在使用 Xcode编写一个iPhone项目,并使用外部库.我将Xcode项目文件添加到父目标并调整标头搜索路径并将其设置为父目标构建目标中的直接依赖项. 现在奇怪的事情发生了:我可以打开库并编译它没有问题.该库链接到一些框架,例如AVFoundation.framework. 我清
我正在使用
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,char const*)in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o) "_OBJC_CLASS_$_AVCaptureVideoPreviewLayer",referenced from: objc-class-ref-to-AVCaptureVideoPreviewLayer in libZXingWidget.a(ZXingWidgetController.o) "_iconv",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",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 我可以在父项目中包含所需的框架,但我认为通过在库项目中包含框架,链接就可以了. 我的问题是:我是否必须包含我的从属子项目在父项目中使用的所有框架,以确保正确链接,或者我做错了什么? 谢谢你的帮助. 解决方法
如果子项目编译成静态库,是的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |