When I try running my Xcode Project it fails with an error stating that I have duplicate symbols. I looked online where the find these duplicates but have had no luck:

Any ideas how to fix this?
From the errors, it would appear that the FacebookSDK.framework already includes the Bolts.framework classes. Try removing the additional Bolts.framework from the project.
For me it helped to switch the "No Common Blocks" compiler setting to NO: It pretty much seems to make sense, the setting is explained here: What is GCC_NO_COMMON_BLOCKS used for?
Using Xcode 8, "Update project to recommended settings" option turned ON 'No Common Blocks' for my project.
Turning it back to OFF fixed everything up.
For me it was that i imported a file as a .m not a .h by mistake
On upgrading to Xcode 8, I got a message to upgrade to recommended settings. I accepted and everything was updated. I started getting compile time issue :
Duplicate symbol for XXXX Duplicate symbol for XXXX Duplicate symbol for XXXX
A total of 143 errors. Went to Target->Build settings -> No Common Blocks -> Set it to NO. This resolved the issue. The issue was that the integrated projects had code blocks in common and hence was not able to compile it. Explanation can be found here.
If you are moving to Xcode 7 or 8 and are opening a really old project, I've encountered this problem:
in SomeConstFile.h
NSString * const kAConstant;
in SomeConstFile.m
NSString *const kAConstant = @"a constant";
Earlier versions of the compiler assumed that the definition in the header file was extern and so including SomeConstFile.h all over the place was fine.
Now you need to explicitly declare these consts as extern:
in SomeConstFile.h
extern NSString * const kAConstant;
This error happens when Linker is trying to link the obj files. Few reasons that i could think of for this error are:
The duplicated Function/Class is defined at two different places/files in the project and only one of them was supposed to compile for any variation of build command. But somehow both those files got compiled in your project. So you need to check your if-else conditions or other dependencies which adds src files to the list of files needed to be compiled and remove the un-needed file for your particular build command.
The duplicated Function/Class is defined accidentally at two different places/files in the project. Remove the wrong definition.
Clean your OBJ directory before you build again, there could be some old obj files in there from your previous builds which might be causing this conflict.
P.S i am no expert, but this is how i solved this problem when i faced it. :)
Below Patch work for me..:)
Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No
Step 2: Go to TARGETS -> Build Settings -> enable testability -> No
Setting it back to NO solved the problem!
Another Solution is to:
Select Project -> Target -> Build phase -> Compile source -> search for the file which is mentioned in the 3rd last error line (In your case BFAppLinkReturnToRefererView.o).
Then you will see either 1 or 2 files in search result.
Remove one of them and compile again. It should recompile now because there is only one file left and no more conflicts for build.
If that doesnt work the file probably has errors in it and you should remove all of them and then recompile. It should work again.
Well, some times when using SDK like FB or Libraries like Vuforia or GoogleAnalytics , adding sample projects may cause the problem that they're already including Frameworks and like so ,so you must make sure not repeating symbols you add manually while they're already included in samples
For me, the issue was the style of creation of const, that worked fine until this iOS8.. i had a few lines as:
int const kView_LayoutCount = 3;
in my .h file. Six lines like resulted in 636 linker files once common blocks was set to NO. (14k+ if YES). Moved the lines to .m after stripping .h of the value declaration and compilation was good to go.
Hope this helps others!
In my case reason was too stupid :
I had a Constant.h file where I had macros defined. I thought of doing NSString there. and did this :
NSString const *kGreenColor = @"#00C34E";
this caused the problem of Duplicate Symbols for Architecture arm64 and Linker command failed with exit code 1. Removing const NSString line worked for me.
From the errors, it would appear any Classes appear multiple time.Find and removed that Classes it will working.
Am creating AppDelegate.h and .m file creating multiple time. So this error will occur.Finally find and removed that classes it's working fine for me.
to solve this problem go to Build phases and search about duplicate file like (facebookSDK , unityads ) and delete (extension file.o) then build again .
check your include file, I had this issue because I accidentally #imported "filename.m" instead of "filename.h", autocorrect (tab) put an "m" not "h".
For me, I created a method called sampleMethod
in ViewController_A and created the same method in ViewController_B too, It caused me this error, then i changed the method name in ViewController_B to secondSampleMethod
. It fixed the error.
Seems like a Good feature to reduce the code and not to duplicate the same code in many places.
I tried changing the No Common blocks from Yes to No then enabling testability from Yes to No. It didn't worked. I Checked duplicate files also in build phases, but there is no duplicate files.
I got this issue because I was lazily defining a variable in my .m outside of a method, then in another .m file I was defining another variable with the same name outside a method. This was causing a global variable name duplicate issue.
The problem for me was I had manually included a framework but then also included that same framework in CocoaPods not knowing I did so. Once I removed one or the other, the problem went away
来源:https://stackoverflow.com/questions/26303782/duplicate-symbols-for-architecture-arm64