我在一个zBar 8项目中使用iOS库,并收到以下编译器警告:
Undefined symbols for architecture armv7:
"_iconv", referenced from:
_qr_code_data_list_extract_text in libzbar.a(qrdectxt.o)
"_iconv_open", referenced from:
_qr_code_data_list_extract_text in libzbar.a(qrdectxt.o)
"_iconv_close", referenced from:
_qr_code_data_list_extract_text in libzbar.a(qrdectxt.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)我遵循了这一建议,整理了框架,我就是这样导入它们的:

我假设库libzbar.a是为armv6处理器创建的,当我针对iOS 8使用armv7时,它会发生冲突。有办法解决这个问题而不改变我的项目架构目标吗?
发布于 2015-03-30 10:50:52
尝试在框架中添加libiconv.dylib。我认为这不是armv7问题。它应该在添加缺少的框架后运行。
发布于 2015-03-30 10:41:25
也许使用本机iOS条码扫描器会是更好的选择?我也在我的一个项目中使用ZBar,但是在iOS 7之后,我开始使用本机,并且非常高兴:)
http://www.infragistics.com/community/blogs/torrey-betts/archive/2013/10/10/scanning-barcodes-with-ios-7-objective-c.aspx
设置
self.output = [[AVCaptureMetadataOutput alloc] init];
dispatch_queue_t metadataQueue = dispatch_queue_create("com.youproject.capturebarcode", 0);
[self.output setMetadataObjectsDelegate:self queue:metadataQueue];
if ([self.session canAddOutput:self.output]) {
[self.session addOutput:self.output];
}和处理委托代码。
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
[metadataObjects enumerateObjectsUsingBlock:^(AVMetadataObject *obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[AVMetadataMachineReadableCodeObject class]]) {
AVMetadataMachineReadableCodeObject *code = (AVMetadataMachineReadableCodeObject *) [self.layer transformedMetadataObjectForMetadataObject:obj];
if ([self.delegate respondsToSelector:@selector(barcodeReader:didReadBarcode:)]) {
[self.delegate barcodeReader:self didReadBarcode:code.stringValue];
self.delegate = nil;
}
}
}];
}发布于 2015-03-30 09:01:54
是的,您是对的,“库libzbar.a是为armv6架构创建的”,而不是为armv7创建的。
如果您试图提供对armv7体系结构的支持,那么在这种情况下,您需要为armv7体系结构构建库,并且它只能由库的开发人员完成(因为构建静态库需要源代码)。
基本上,使用i386(模拟器)和armv7(任何必需的体系结构)的静态库创建fat(静态库)文件,并随静态库的SDK一起提供,后者在模拟器和设备上工作。
fat文件是通过在单个体系结构静态库上执行lipo命令来创建的。
https://stackoverflow.com/questions/29341957
复制相似问题