I have duplicate symbol _main.
The problem is it says \"Duplicate symbol _main in /Users/.../i386/main-B9843B6026D6EFA4.o and /Users/.../i386/main-B9843B6026D6EFA4.o
You can get this for method names too!
I got duplicate symbol _runOnMainQueueWithoutDeadlocking
after adding DBCamera via CocoaPods and it was because both my category on NSObject (NSObject+Tools.h) and the GPUImage dependency file GPUImageOutput.m both had a method called 'runOnMainQueueWithoutDeadlocking'.
I was fortunate enough to be able to remove my method from code because I wasn't actually using it anymore or anywhere.
It's probably what I deserve for putting a category on NSObject.
If still have a problem, try to search like this: "int main(", and remove those files except main.m
I also had this problem and it was caused by code I imported from another project. I did a grep for "int main" in my project directory:
grep -nr "int main" .
and found
./main.m:13:int main(int argc, char *argv[])
./IMPORTED_DIR/main.m:13:int main(int argc, char *argv[])
the IMPORTED_DIR contained the extra main.m that was causing the error for me
I removed that file from the Project -> Targets -> Build phases -> Compile sources list and then it compiled
I was facing the same issue with using two third party framework. (AppLovin and Flurry) And I came to know that by removing "all_load" from "Other Linker Flags" in build settings.
Just got this problem myself, but after reading huggie's solution which did lead me on the right track, I was left a bit confused. So current solution in Xcode: Choose project, target -> build phases and click validate settings
Then Xcode will auto fix its own mistake. It is always nice when the tools tries to stop your progress ;)
In my case, I had imported another project, in order to utilize a library contained within. It resulted my project having two main.m files.
This was even more confusing, since the error didn't show up until several builds later.