23

我刚刚编译了一个项目,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)
4

3 回答 3

40

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

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

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

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

#import <Accelerate/Accelerate.h>

在进行快速搜索时,您可能必须去掉前导下划线。也就是说,搜索 vImageBoxConvolve_ARGB8888

希望这可以帮助

于 2013-07-02T00:23:32.007 回答
11

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

https://github.com/rnystrom/RNBlurModalView/issues/5

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

于 2013-07-01T22:39:43.823 回答
1

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

于 2015-09-07T06:35:23.500 回答