Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ZBar:架构armv7的未定义符号_Ios_Armv7_Zbar Sdk_Zbar - Fatal编程技术网

Ios ZBar:架构armv7的未定义符号

Ios ZBar:架构armv7的未定义符号,ios,armv7,zbar-sdk,zbar,Ios,Armv7,Zbar Sdk,Zbar,我在iOS 8项目上使用zBar库,收到以下编译器警告: 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(qr

我在iOS 8项目上使用zBar库,收到以下编译器警告:

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处理器创建的,因为我的目标是iOS8和armv7,所以它会发生冲突。有没有一种方法可以在不改变项目架构目标的情况下解决这个问题?

是的,您是对的“libzbar.a库是为armv6架构创建的”,而不是为armv7创建的

如果您试图提供对armv7体系结构的支持,那么在这种情况下,您需要为armv7体系结构构建库,这只能由库的开发人员完成(因为构建静态库需要源代码)

基本上,fat(静态库)文件是使用i386(模拟器)和armv7(任何必需的体系结构)的静态库创建的,并随在模拟器和设备上工作的静态库SDK一起提供


fat文件是通过在单个体系结构静态库上执行lipo命令创建的。

使用本机iOS条形码扫描仪可能是更好的选择? 我也在我的一个项目中使用ZBar,但在iOS 7之后,我开始使用native,并变得非常高兴:)

设置

和处理委托代码

- (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;
         }
     }
    }];
}

尝试在框架中添加
libiconv.dylib
。我不认为这是armv7的问题。它应该在添加缺少的框架后运行

- (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;
         }
     }
    }];
}