【问题标题】:Undefined symbols for CIFilter even though I have included CoreImage.hCIFilter 的未定义符号,即使我已包含 CoreImage.h
【发布时间】:2017-02-04 18:57:25
【问题描述】:

我有这些代码可以在Tools.m 上打印二维码:

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

但是当我编译它时,它显示错误:

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)

为什么会出现这个错误?我已经正确包含CoreImage.h,据我所知,我在网上找不到类似的错误,这意味着这个错误是不寻常的。不过我可以 CMD+单击 CIFilter,它会导致 CoreImage/CIFilter.h

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

我的项目部署目标设置为 iOS 8.0。我在这个项目中使用的是没有 ARC 的 Obj C。

【问题讨论】:

    标签: objective-c core-image


    【解决方案1】:

    忘记这个问题。答案是不要忘记将CoreImage framework中的项目target>General>滚动到底部。

    叹息。

    symbol(s) not found for architecture armv7s (linker command failed with exit code 1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2010-10-15
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多