2012-07-19 18 views
24

Ho un errore in fase di compilazione. Sembra strano ha funzionato come applicazione per la visualizzazione dei dettagli, ma l'uso della vista singola non sembra funzionare. questo è i dettagli dell'errore:Errore comando linker: 'ld: simbolo/i non trovato per l'architettura i386'

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_RssArticle", referenced from: 
     objc-class-ref in RssXmlParser.o 
    ld: symbol(s) not found for architecture i386 
    clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

utilizza Xcode 4.3? –

risposta

57

provare questi passaggi:

  1. Aprire il progetto in XCode.

  2. Nella finestra/pannello laterale di sinistra di XCode fare clic sul nome del progetto in alto.

  3. Selezionare ora Target dal pannello laterale destro di XCode.

  4. Selezionare Crea Fasi dalla parte superiore del pannello destro. (qui l'altra opzione sarà Build Settings, Build Rules)

  5. Nello stesso pannello aprire "Compile sources", qui controllare: sono elencati tutti i file (.m)? se non tutti i file cliccare sul segno (+) nella parte inferiore per aggiungere i file (.m), che non è nella lista

  6. Secondo il vostro errore sembra RssXmlParser non c'è, aggiungere questo e compilare di nuovo

Funzionerà bene ora.

+0

Per quale versione di X-Code funziona? Non riesco a trovare Target sul lato destro ... –

+1

@CameronTarbell In XCode 5.1, appare come questo: http://i.imgur.com/G7OCboX.png – Glide

+0

@iOSTest Mi sono imbattuto nello stesso problema. Voglio sapere perché succede questo, però. – Glide

0

Ho risolto lo stesso problema perché ho creato componenti come progetti separati. Dopo aver aggiunto le cartelle al progetto principale, ho dimenticato di eliminare i file .plist, .string e extra.m dalle directory dei gruppi di componenti importati.

Eliminazione di questi risolto il problema perché l'applicazione è stata, ovviamente, ottenendo comandi di compilazione in conflitto ...

0

ho incontrato questo errore a causa di duplicare i nomi dei file (che avevo creato sottoclassi NSManagedObjectContext automaticamente nei dati di base attraverso il menu dell'editor).

A partire dal XCODE 5.0, basta chiudere e riavviare e Xcode dovrebbe riconoscere questo e risolvere il problema per voi, se si fa clic sul giallo di avvertimento nel riquadro a sinistra

2

Nel mio caso, ho erroneamente creato una nuova sottoclasse di UIView con file .h e .c anziché e .m. La modifica delle estensioni è stata semplice, ma non ho pensato di modificare il contenuto dei file .m. Così i miei file .h avuto

#ifndef My_Project_MPMyView_h 
#define My_Project_MPMyView_h 

#import <UIKit/UIKit.h> 

@interface MPMyView : UIView 

@end 

#endif 

e miei file .m avevano erroneamente

#include <stdio.h> 

Quando ho cambiato i miei file .m a

@interface MPMyView : UIView 

@end 

@implementation MPMyView 

@end 

L'errore di linker è stato fissato.

13

Mi sono reso conto che dovevo usare il file .xcworkspace invece del file .xcodeproj.

+1

wow, mi sento molto stupido adesso. – Machado

+0

Oh mio dio. Ha funzionato ... ma perché ?? – Fomentia

+0

Questo ha funzionato bene per me, ma mi piacerebbe anche sapere perché. Alcuna spiegazione? – Phantomazi

0

Un errore simile mi è appena successo su Xcode 6.4. Sembra un bug Xcode.

La mia soluzione era quella di passare al file ".o" che ha causato l'errore, deselezionare e ricontrollare le appartenenze ai target di cui si ha bisogno.

7

prodotto -> Clean poi prodotto -> Esegui :)

0

penso che potrebbe essere che si sta tentando di creare due diversi file .C (con funzione principale) in un unico progetto. C ti consente solo di avere un ingresso principale per ogni progetto.

26

Non vedo nessuno che suggerisce di andare al terminale e passare alla directory in cui il progetto è ed eseguire

xcodebuild -verbose

per vedere l'errore dettagliata e solo leggendo l'errore aiuta un sacco di tempo

+0

questa non è esattamente una risposta, ma ancora questa risposta + selezionata mi ha aiutato a risolvere il mio problema! Personalmente, avevo due file .m di plugin (serviti allo stesso scopo) nella lista dei file .m. Ne ho rimosso uno e l'ho ricostruito e questo ha risolto il problema. –

0

Non so come funzionava. Ma ho semplicemente chiuso il codice xcode e l'ho riaperto facendo clic su xcworkspace e ho lavorato per me. potresti provare a sperare che questo possa risolvere il tuo problema grazie.

0

Tenere premuto alt. Nella barra degli strumenti in alto vai a

prodotto> cartella generazione pulita

Premere "cartella di generazione pulita" e attendere che per costruire ed eseguire. Dovrebbe risolvere qualsiasi errore nel file di build.

Problemi correlati