Domanda

sto ottenendo il seguente errore in Xcode 3.2.1 su Snow Leopard 10.6.2 ogni volta che provo a compilare qualsiasi applicazione iPhone generato da Appcelerator Titanium. Tuttavia, l'errore di generazione appare solo quando si seleziona simulatore di iPhone sul menu architettura e se seleziono il dispositivo iPhone, sono in grado di eseguire l'applicazione sul mio dispositivo.

ulteriormente più, il simulatore di iPhone lancia con successo ed esegue il programma direttamente dall'ambiente di titanio che usa Xcode per costruire.

Perché sta succedendo?

  

ld: duplicate symbol _main in Resources/libTitanium.a(main.o) and /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/Objects-normal/i386/main.o collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

È stato utile?

Soluzione

Non posso dire perché questo sta accadendo, ma posso suggerire una soluzione. Quando ho commentato l'intero contenuto del file main.m che è stato generato per il mio progetto di titanio, sono stato in grado di compilare ed eseguire con successo sul simulatore. Fatemi sapere se funziona per voi.

Altri suggerimenti

Controlla per vedere se si dispone di più dichiarazioni di funzione principale nel progetto.

Ho appena trascorso un paio d'ore combattere questo. E 'stato perché stavo usando la bandiera -all_load linker. Se si utilizza quella bandiera per aggirare il bug categoria, ci sono alcune altre soluzioni - vedere qui .

Ho avuto un problema simile. Una classe unit test è stato incluso per sbaglio nella mia build. Se si cerca il progetto per la "principale (" probabilmente troverete le funzioni duplicate.

Questo è accaduto a me per 2 motivi:

1: Classe A chiama classe B e sia aveva importato la stessa classe. Risolvere il problema importando la classe nel file di .m.

2: Due classi hanno una costante con lo stesso nome (anche se la costante è definita nel file .m). Risolvere il problema cambiando il nome delle costanti.

ho avuto questo problema perché mi definisco un file come ad esempio:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
... 
} 

E ha avuto anche un file main.m:

int main(int argc, char* argv[])
{
    @autoreleasepool {
        int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
        return retVal;
    }
}

Sembra come se non ci sono più modi per entrare in questo stato. Il mio era diverso. Ho letto un suggerimento dove si poteva trascinare da un selettore evento .xib nell'attuazione .h del vostro controller della vista e sarebbe auto-gen i vostri metodi. Lo ha fatto - che era fresco. Ho subito cominciato a ricevere gli errori di simboli duplicati -. Che non era fresco

non ho avuto il tempo di scavare in profondità nel linker per vedere cosa è successo. Ho creato un nuovo controller della vista, copiato il contesto del mio vecchio .xib nel nuovo ragazzo. Eliminato il vecchio .h, .m e .xib e costruito e ha funzionato di nuovo. Molto strano, spreco di tempo molto fastidioso.

C'è ovviamente un po 'di bug con questo Xcode "convenienza".

Ho trovato questo è accaduto quando ho avuto un file di implementazione con una funzione principale in esso (diciamo abc.m) e aveva anche un'altra main.m. Una volta che ho commentato la funzione principale nel abc.m, il progetto compilato con successo.

basato fuori quello che posso dire da queste altre risposte, ho intenzione di bisogno di essere rimuovere un sacco di metodi main.

Ma per farlo facilmente ho bisogno di rimuovere tutti i commenti gd dai miei file perché sono assiduamente documentati con i commenti a quasi ogni altra linea

Questa espressione regolare corrisponde a tutti i commenti multi-linea C compresi i loro delimitatori e può aiutare nel vostro cammino

/\*((?!\*/).)*\*/

ho speso più di un'ora nella ricerca di una risposta corretta, ma niente ha funzionato per me. Infine, il Xcode è di per sé dice qualcosa è duplicato, in modo da andare a quel particolare cartella (in questo caso: /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/ Oggetti-normali / i386 / main.o) ed eliminare tutti i file e di controllare anche lo stesso nel progetto se quella particolare classe / interfaccia è dichiarata due volte se si eliminarlo.

Dopo l'eliminazione pulita ed eseguire il progetto.

Ha funzionato per me Spero che questo aiuti (-_-).

Elimina cartella /Users/{username}/Library/Developer/Xcode/DerivedData e costruire di nuovo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top