Dupliceer symbolen voor architectuur x86_64 onder Xcode

Ik heb nu dezelfde vraag met bovenstaande titel maar heb het juiste antwoord nog niet gevonden. Ik kreeg de fout:

   /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Alle hulp wordt op prijs gesteld.

Eindelijk vind ik de reden van deze fout, want ik heb -ObjCtoegevoegd aan de Other Linker Flags. Nadat ik deze waarde heb verwijderd, kan ik mijn project met succes bouwen, maar ik weet niet waarom. Kan iemand dit uitleggen?


Antwoord 1, autoriteit 100%

75 dubbele symbolen voor architectuur x86_64

Betekent dat je dezelfde functies twee keer hebt geladen.
Aangezien het probleem verdwijnt na het verwijderen van -ObjCuit Other Linker Flags,
dit betekent dat deze optie resulteert dat functies twee keer worden geladen:

van Technische Q&A

Met deze vlag kan de linker elk objectbestand in de bibliotheek laden
die een objectieve klasse of categorie definieert. Hoewel deze optie zal zijn
meestal resulteren in een groter uitvoerbaar bestand (vanwege extra objectcode
Geladen in de toepassing), zal het de succesvolle creatie mogelijk maken
Effectieve objectieve-C-statische bibliotheken die categorieën bevatten
bestaande klassen.

https://developer.apple.com/Library/content/ qa / qa1490 / _index.html


Antwoord 2, Autoriteit 227%

Voor mij, ‘geen gemeenschappelijke blokken’ van JA aan NO (onder Targets- & GT; Build Settings- & GT; Apple LLVM – Code Generation) heeft het probleem opgelost.


Antwoord 3, Autoriteit 215%

Stupid One, maar zorg ervoor dat u niet #imported a .mbestand per ongeluk ergens


Antwoord 4, Autoriteit 48%

In mijn geval heb ik zojuist een header-bestand gemaakt om constante snaren zoals deze te definiëren:

NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

Ik heb dit scenario opgelost met behulp van static:

static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

Antwoord 5, Autoriteit 28%

gebeurt ook wanneer u const variabelen met dezelfde naam in verschillende klasse verklaart:

In File Message.m

const int kMessageLength = 36;
@implementation Message
@end

in bestand chat.m

const int kMessageLength = 20;
@implementation Chat
@end

Antwoord 6, autoriteit 28%

Ik heb hetzelfde probleem.
In Xcode 7.2 in pad Projectdoel > Build-instelling > Geen gemeenschappelijke blokken, ik verander het in NEE.


Antwoord 7, autoriteit 27%

Ik heb gevonden dat het geaccepteerde antwoord betrekking heeft op het probleem, maar heeft me niet geholpen het op te lossen, hopelijk helpt dit antwoord bij dit zeer frustrerende probleem.

duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
17 duplicate symbols for architecture x86_64

“Betekent dat je dezelfde functies twee keer hebt geladen. Aangezien het probleem verdwijnt na het verwijderen van -ObjC van Other Linker Flags, betekent dit dat deze optie resulteert dat functies twee keer worden geladen:”

In lekentaal betekent dit dat we twee bestanden in ons project hebben met exact dezelfde naam. Misschien combineert u het ene project in het andere? Bekijk de fouten boven de “dubbele symbolen”-fout om te zien welke map is gedupliceerd, in mijn geval was dit BLoginViewController.

In de onderstaande afbeelding kun je bijvoorbeeld zien dat ik twee BImageViewControllers heb, bij mij veroorzaakte dit het probleem.

Zodra ik er een verwijderde, was het probleem verdwenen 🙂


Antwoord 8, autoriteit 25%

Dit gebeurde bij mij toen ik de pop-up ‘aanbevolen instellingen’ accepteerde voor een project dat ik twee jaar geleden in Objective-C ontwikkel.

Het probleem was dat toen je de “aanbevolen instellingen”-update accepteerde, Xcode automatisch enkele build-instellingen wijzigde of toevoegde, waaronder GCC_NO_COMMON_BLOCKS = YES;.

Hierdoor is de build mislukt met de fout duplicate symbolin mijn bijgewerkte project. Dus ik veranderde No Common Blockin NOin mijn build-instellingen en de fout was verdwenen.


Antwoord 9, autoriteit 15%

De snelste manier om het duplicaat te vinden is:

  1. Ga naar doelen
  2. Ga naar bouwfasen
  3. Ga naar bronnen compileren
  4. Verwijder dubbele bestanden.

Antwoord 10, autoriteit 15%

Ik heb dit probleem ondervonden na het installeren van Cocoapods. Gebeurt nu elke keer als ik sommige pods bijwerk. Oplossing die ik heb gevonden:

Ga naar terminal:

1) pod deintegrate
2) pod install

Vink ook het item ‘Swift-bibliotheken altijd insluiten’ aan in uw Build-instellingen. Het moet “vervaagd” zijn om aan te geven dat het de standaardconfiguratie gebruikt. Als het is ingesteld op een handmatige JA, druk dan op verwijderen om het terug te zetten naar de standaardconfiguratie. Dit stopte het gedrag.


Antwoord 11, autoriteit 12%

De volgende stappen hebben het probleem voor mij opgelost.

  1. Ga naar Bouwfasen in Doelinstellingen.
  2. Ga naar “Binary koppelen aan bibliotheken”.
  3. Controleer of een van de bibliotheken twee keer bestaat.
  4. Opnieuw bouwen.

Antwoord 12, autoriteit 11%

  • Ga naar doelen
  • Selecteer Build-instellingen
  • Zoek naar ‘No Common Blocks’, selecteer het als NO.

Het werkte voor mij


Antwoord 13, autoriteit 11%

Verwijder -ObjC uit andere linkervlaggen of
Controleer of je per ongeluk een .m-bestand hebt geïmporteerd in plaats van een .h.


Antwoord 14, autoriteit 8%

Mijn situatie met een verouderd project geopend in Xcode 7.3 was:

duplicate symbol _SomeEnumState in:

gevolgd met een lijst van twee niet-gerelateerde bestanden.o, dit werd een paar keer herhaald en uiteindelijk:

ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Wat het voor mij oploste, was het wijzigen van de enum-declaratie van:

enum SomeEnumState {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
} SomeEnumState;

naar dit:

typedef NS_ENUM(NSUInteger, SomeEnumState) {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
};

Als iemand hier een verklaring voor heeft, licht me dan alstublieft toe.


Antwoord 15, autoriteit 7%

Het definiëren van dezelfde variabele onder @implementation in meer dan één klasse kan dit probleem ook veroorzaken.


Antwoord 16, autoriteit 7%

In mijn geval waren er twee bestanden met dezelfde naam op de locatie

Doelen > Bouwfasen > Compileer bronnen en verwijder eventuele dubbele bestanden.


Antwoord 17, autoriteit 7%

Antwoord bijwerken voor 2021, Xcode 12.X:

pod deintegrate 
pod install

Hopelijk helpt dit!


Antwoord 18, autoriteit 5%

Voor mij tijdens de door Xcode8 aanbevolen projectinstellingen update “Geen gemeenschappelijke blokken” naar JA, wat dit probleem veroorzaakt.


Antwoord 19, autoriteit 4%

Vandaag kreeg ik dezelfde foutmelding. Het sleutelwoord van de fout is duplicate. Ik repareer het door:

1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :

3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear

Antwoord 20, autoriteit 3%

Een andere domme fout die deze fout veroorzaakt, zijn herhaalde bestanden. Ik heb per ongeluk een aantal bestanden twee keer gekopieerd. Eerst ging ik naar Targets -> Bouwfasen -> Bronnen samenstellen. Daar zag ik enkele bestanden op die lijst twee keer en hun locaties.


Antwoord 21, autoriteit 3%

Zorg ervoor dat u niet per ongeluk een .m-bestand hebt geïmporteerd, misschien wilt u uw afgeleide gegevens in het Projectenvenster verwijderen en vervolgens opnieuw bouwen en uitvoeren.


Antwoord 22, autoriteit 3%

Ik kreeg dezelfde fout toen ik een pod-repository toevoegde

pod 'SWRevealViewController'

voor een reeds toegevoegde broncode (SWRevealViewController) van gitHub. De fout wordt dus verholpen door ofwel de broncode of de pod-repository te verwijderen.

Geval #2:

De tweede keer verscheen deze fout toen ik een constante in .h-bestand declareerde.

NSString * const SomeConstant  = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...

Antwoord 23, Autoriteit 3%

Voor iemand anders die dit probleem heeft, heb ik mijn resolutie in een van deze antwoorden niet gezien.

Na het samenvoegen van een .pbxproj-conflict dat handmatig werd aangepakt (zij het slecht), waren er dubbele verwijzingen naar individuele klassenbestanden in de .pbxproj. Die uit het project & GT verwijderen; Bouw fasen & GT; Compileerbronnen hebben alles voor mij vastgelegd.

Ik hoop dat dit iemand bij de lijn helpt.


Antwoord 24, Autoriteit 3%

Vergelijkbaar met Juice007, had ik een C-type variabele in twee verschillende .m-bestanden (die niet geïmporteerd zijn!)

BOOL myVar = NO;

Deze methode van het declareren en initialiseren van een variabele, zelfs in .m, zelfs in @implementatie verleent het globale scope. Uw opties zijn:

  1. Verklaar het als statisch, om de reikwijdte naar de klas te beperken:

    static BOOL myVar = NO;
    
  2. Verwijder de initialisatie (waardoor de twee klassen de Global Var delen):

    BOOL myVar;
    -(void) init{
        myVar = NO;
    }
    
  3. Verklaar het als een eigenschap:

    @property BOOL myVar;
    
  4. Verklaar het als een juiste ivar in de @interface

    @interface myClass(){
        BOOL myVar;
    }
    @end
    

Antwoord 25, Autoriteit 3%

In mijn geval had ik twee main()methoden die in mijn project zijn gedefinieerd en het verwijderen van één opgelost het probleem.


Antwoord 26, Autoriteit 3%

De bovenstaande antwoorden werkten niet voor mij. Hier is hoe ik er omheen kwam:

1) in Finder, verwijder de volledige Pods-map en het Podfile.lock-bestand
2) sluit het xcode-project
3) voer pod-installatie uit in de terminal
4) open het xcode-project, voer de opdracht schoon bouwen uit

Werkte daarna voor mij.


Antwoord 27, autoriteit 3%

Omdat ik dit antwoord niet heb gezien:

Verwijder en installeer uw podfiles opnieuw! Verwijder of verwijder eerder toegevoegde bibliotheek: cacaopods

Ik ben dit probleem meer dan drie keer tegengekomen bij het bouwen van mijn app en elke keer is dit de oplossing. 🙂


Antwoord 28, autoriteit 2%

Ik kreeg hetzelfde probleem toen ik het lob-project in mijn project integreerde.

Eigenlijk heeft het lob-project ook de AFNetworking-bestanden,
Dus ik verwijder de .m-bestanden van het lob-project.

Eigenlijk conflicteren .m-bestanden met My project POd/AFNetworking/ .m-bestanden


Antwoord 29, autoriteit 2%

Onlangs hoofdpijn gehad bij het zoeken naar de oorzaak van een fout. Ik vroeg me af, toen ik ontdekte dat mijn app niet wil compileren, simpelweg omdat ik het volgende codefragment in verschillende klassen had:

dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
    NSTimeInterval interval;
    double second, subsecond;
    struct timespec time;
    dispatch_time_t milestone;
    interval = [date timeIntervalSince1970];
    subsecond = modf(interval, &second);
    time.tv_sec = second;
    time.tv_nsec = subsecond * NSEC_PER_SEC;
    milestone = dispatch_walltime(&time, 0);
    return milestone;
}

Ik hoop dat dit iemand kan helpen.


Antwoord 30, autoriteit 2%

Ik hoop dat het je zeker zal helpen

Ik kreeg dezelfde fout 3 dubbele symbolen voor architectuur x86_64

in mijn geval heb ik code gekopieerd uit een ander bestand van hetzelfde project, bijv. code van A.m-bestand naar B.m en na compilatie kreeg ik een foutmelding als vermelding. en ik heb een fout opgelost door de naam van de globale variabele te wijzigen.

deze fout kwam in mijn geval vanwege dezelfde verklaring voor globale variabele in beide bestanden.

Other episodes