2017-02-04 1 views
0

j'ai ce code pour imprimer QRCode sur Tools.m:Undefined symbols pour CIFilter même si je l'ai inclus CoreImage.h

#import <CoreImage/CoreImage.h> 
... 
+ (UIImage *)renderQRCodeFrom:(NSString *)source withImageViewFrameSize:(CGSize)imageViewFrameSize { 

    NSString *qrString = source; 
    NSData *stringData = [qrString dataUsingEncoding: NSUTF8StringEncoding]; 

    CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; 
    [qrFilter setValue:stringData forKey:@"inputMessage"]; 
    [qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"]; 

    CIImage *qrImage = qrFilter.outputImage; 
    float scaleX = imageViewFrameSize.width/qrImage.extent.size.width; 
    float scaleY = imageViewFrameSize.height/qrImage.extent.size.height; 

    qrImage = [qrImage imageByApplyingTransform:CGAffineTransformMakeScale(scaleX, scaleY)]; 

    return [UIImage imageWithCIImage:qrImage scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]; 
} 

Mais quand je compile, il indique l'erreur:

Undefined symbols for architecture arm64: 
    "_OBJC_CLASS_$_CIFilter", referenced from: 
     objc-class-ref in Tools.o 
ld: symbol(s) not found for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Pourquoi cette erreur se produit? J'ai inclus CoreImage.h correctement, et pour autant que je sache, je ne peux pas trouver une telle erreur similaire sur le web, ce qui signifie que cette erreur est inhabituelle. Je peux CMD + cliquer sur le CIFilter cependant, et il mène à CoreImage/CIFilter.h.

NS_CLASS_AVAILABLE(10_4, 5_0) 
@interface CIFilter : NSObject <NSSecureCoding, NSCopying> 
{ 
    void *_priv[8]; 
} 
... 

Ma cible de déploiement de projet est définie sur iOS 8.0. J'utilise Obj C sans ARC dans ce projet.

Répondre