2015-05-15 5 views
6

Sto provando nella libreria C this. Ho aggiunto i file al mio progetto e creato un file Objective-C per seguire l'esempio sulla pagina github. Ho importato il file objc nel mio colpo di testa di ponte, ma quando compilo miUtilizzo di file C con Swift che causa l'errore del linker

Ld /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Products/Debug-iphoneos/trinkeSwift.app/trinkeSwift normal arm64 
    cd /Users/nickporter/Developer/trinkeSwift 
    export IPHONEOS_DEPLOYMENT_TARGET=8.0 
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk -L/Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Products/Debug-iphoneos -F/Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Products/Debug-iphoneos -filelist /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/trinkeSwift.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -add_ast_path -Xlinker /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/trinkeSwift.swiftmodule -miphoneos-version-min=8.0 -framework CoreGraphics -framework Foundation -framework UIKit -Xlinker -dependency_info -Xlinker /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/trinkeSwift_dependency_info.dat -o /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Products/Debug-iphoneos/trinkeSwift.app/trinkeSwift 

duplicate symbol _str_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _mymodifier in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _fromModifier in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _timePointer in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _temp_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _set_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _curtime in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _initialTime in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _changeAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _fromChangeAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _specAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _finalSpecAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _unusedText in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/DateGenerator.o 
duplicate symbol _str_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _changeAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _fromChangeAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _temp_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _set_time in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _specAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _finalSpecAmount in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _mymodifier in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _fromModifier in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _timePointer in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _curtime in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _initialTime in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
duplicate symbol _unusedText in: 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/TimeParser.o 
    /Users/nickporter/Library/Developer/Xcode/DerivedData/trinkeSwift-dhbvybojkdowcfffscchwxwgahyj/Build/Intermediates/trinkeSwift.build/Debug-iphoneos/trinkeSwift.build/Objects-normal/arm64/y.tab.o 
ld: 28 duplicate symbols for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Il codice della mia classe objc è

+ (NSDate *)dateFromNatrualString:(NSString *)text 
{ 
    NSString *when = text.lowercaseString; 
    char *whenstr = (char *)[when UTF8String]; 
    time_t finalTime = parseDateTimeString(whenstr); 
    str_time= localtime(&finalTime); 
    NSString *thedate = [NSString stringWithCString:asctime(str_time) encoding:NSUTF8StringEncoding]; 

    NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
    formatter.dateFormat = @"EEEE MMM dd HH:mm:ss yyyy"; 


    return [formatter dateFromString:thedate]; 
} 

Qualcuno sa come posso risolvere questo problema?

+0

Sembra che abbia importato/incluso un file .c o .m invece del file .h da qualche parte. –

+0

@ Martinin Ho guardato tutti i miei file e non sembra che abbia importato un file .c o .m. Altre idee? – Clip

+0

Sembra che tu abbia la stessa funzione dichiarata in più di un file. Dai un'occhiata ai file che generano 'TimeParser.o' e' DateGenerator.o'. – SevenBits

risposta

4

La libreria in uso sta definendo i simboli all'interno del file TimeParser.h. Ogni volta che includi quel file nel tuo progetto in più di uno dei tuoi file, finisci con definizioni duplicate. Ad esempio, le prime 3 voci nel log degli errori corrispondono alle variabili definite in TimeParser.h: str_time, mymodifier e frommodifier.

TimeParser.h deve contenere solo dichiarazioni per evitare questo problema. Per aiutarvi con la differenza tra dichiarazione e definizione, fate riferimento a questo post: What is the difference between a definition and a declaration?

+0

Oppure è necessario includere il file 'TimeParser.h' in un solo file. Ogni volta che includi 'TimeParser.h', dichiara le variabili globali' str_time', 'temp_time,' set_time', ... Quindi, queste variabili globali sono duplicate in ciascun modulo di importazione e sono duplicate in base al tempo di collegamento. –

+0

Funziona. basta aggiungere extern a tutte le variabili duplicate e definirle (copiando la definizione originale in TimeParser.h in TimeParser.c) all'inizio di TimeParser.c. –

Problemi correlati