Ios Xcode给出Apple Mach-O链接器错误

Ios Xcode给出Apple Mach-O链接器错误,ios,objective-c,linker-errors,mach-o,undefined-symbol,Ios,Objective C,Linker Errors,Mach O,Undefined Symbol,我刚刚编译了一个项目,Xcode返回这两个错误,这似乎不是我代码的错。我怎样修理它们 Undefined symbols for architecture i386: "_vImageBoxConvolve_ARGB8888", referenced from: -[UIImage(Blur) boxblurImageWithBlur:] in UIImage+Blur.o ld: symbol(s) not found for architecture i386 clang:

我刚刚编译了一个项目,Xcode返回这两个错误,这似乎不是我代码的错。我怎样修理它们

Undefined symbols for architecture i386:
  "_vImageBoxConvolve_ARGB8888", referenced from:
      -[UIImage(Blur) boxblurImageWithBlur:] in UIImage+Blur.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

谷歌是你的朋友:其他人通过在他们的项目中添加加速框架(这看起来确实像是一个框架错误)解决了这个问题

确保还包括QuartzCore框架,因为该库也需要该框架。

教男人(或女人)如何钓鱼:

通常Mach-O链接器错误意味着您没有在代码中包含正在使用的函数的头文件

最简单的方法是复制该函数或方法调用,并使用shift+command+O将其粘贴到Xcode quick search中。这将搜索所有框架(和头文件),找到该函数或方法调用并显示其位置(本例中的头文件):

在这种情况下,此调用属于加速框架,因此在文件顶部输入:

#import <Accelerate/Accelerate.h>
#导入
在进行快速搜索时,可能必须去掉前导下划线。换句话说,搜索vImageBoxConvolve_argb888


希望这有帮助

显然vImageBoxConvolve_argb888()没有定义。查看加速框架是否正确包含在项目中。

是否显示相关代码?问题在于
UIImage+Blur.m
文件。它正在查找名为vImageBoxConvolve_argb888的符号。您需要包含带有此符号的.m(或.c)文件。看看这些链接,它们非常相似:这不准确。这种性质的链接器错误最常见的原因是未能针对提供您正在使用的符号的框架或库进行链接。如果您未能
#包含
#导入
必要的标题,您很可能会收到一条类似于
警告的警告:函数“vImageBoxConvolve_ARGB8888”的隐式声明在C99中无效
。添加缺少的
#include
#import
将解决编译器警告问题,但不会解决链接器错误。这是一种很好的方法,可以找出您缺少的框架,尽管我无法找到缺少的库,您能告诉我如何找出缺少的库吗?使用加速框架不需要链接QuartzCore。我没有说过。他正在使用的库RNBlurModalView需要QuartzCore和Accelerate才能正常工作。如果其中一个被遗漏了,那么另一个也被遗漏了,这是很好的机会,所以我在答案中添加了它作为注释。