Xcode gives Apple Mach-O linker error

kuranes picture kuranes · Jul 2, 2013 · Viewed 48.1k times · Source

I just compiled a project and Xcode returns these two errors which don't seem to be my code's fault. How do I fix them?

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)

Answer

Khaled Barazi picture Khaled Barazi · Jul 2, 2013

Teaching a man (or women) how to fish:

Usually Mach-O Linker Error means you have not included a header file for a function you are using in your code.

Easiest way is to copy that function or method call and paste into Xcode quick search using shift+command+O. This will search all frameworks (and header files), find that function or method call and show you its location (the header in this case):

In this case, this call belongs to the Accelerate framework so on top of your file, enter:

#import <Accelerate/Accelerate.h>

When doing quick search, you might have to get rid of leading underscore. In other words, search for vImageBoxConvolve_ARGB8888

Hope this helps