Question

Je reçois l'erreur suivante dans Xcode 3.2.1 sur Snow Leopard 10.6.2 chaque fois que je tente de compiler une application iPhone générée par Appcelerator Titanium. Cependant, l'erreur de compilation apparaît uniquement lorsque je sélectionne le simulateur iPhone dans le menu architecture et si je sélectionne l'appareil iPhone, je suis en mesure d'exécuter l'application sur mon appareil.

De plus, le simulateur iPhone lance avec succès et exécute le programme directement à partir de l'environnement de titane qui utilise Xcode pour construire.

Pourquoi est-ce qui se passe?

  

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

Était-ce utile?

La solution

Je ne peux pas vous dire pourquoi cela se passe, mais je peux proposer une solution de contournement. Quand je commentais le contenu entier du fichier main.m qui a été généré pour mon projet de titane, j'ai pu compiler et exécuter avec succès sur le simulateur. Faites-moi savoir si cela fonctionne pour vous.

Autres conseils

Vérifiez si vous avez plusieurs déclarations de la fonction principale de votre projet.

Je viens de passer quelques heures aux prises avec celui-ci. C'était parce que j'utilisais le drapeau linker -all_load. Si vous utilisez ce drapeau pour contourner le bug de la catégorie, il y a d'autres solutions - voir ici .

J'ai eu un problème similaire. a été accidentellement inclus dans ma construction d'une classe de test unitaire. Si vous recherchez votre projet pour « principal ( » vous trouverez probablement les fonctions en double.

Ce qui est arrivé à moi pour 2 raisons:

1: Classe A appelle la classe B et les deux avaient importé la même classe. Résoudre le problème en important la classe dans le fichier .m.

2: Deux classes ont une constante avec le même nom (même si est défini dans le fichier .m constant). Résoudre le problème en changeant le nom des constantes.

J'ai eu ce problème parce que je définis un fichier en tant que tel:

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

Et a également un fichier main.m:

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

Semble comme si il y a plusieurs façons d'entrer dans cet état. Le mien était différent. Je lis un soupçon où l'on pouvait faire glisser d'un sélecteur d'événements .xib dans la mise en œuvre .h de votre contrôleur de vue et ce que vos méthodes d'auto-gen. Il a fait - ce qui était cool. J'ai immédiatement commencé à avoir des erreurs de double symbole -. Qui était pas cool

Je ne l'ai pas eu le temps de creuser profondément dans l'éditeur de liens pour voir ce qui est arrivé. J'ai créé un nouveau contrôleur de vue, recopié le contexte de mon ancien .xib dans le nouveau type. Supprimé l'ancien .h, .m et .xib et construit et cela a fonctionné à nouveau. Très étrange, perte de temps très ennuyeux.

Il y a évidemment un bug avec cette Xcode "commodité".

J'ai trouvé ce qui est arrivé quand j'ai eu un fichier de mise en œuvre d'une fonction principale en elle (par exemple abc.m) et a également eu une autre main.m. Une fois que je commentais la fonction principale dans abc.m, le projet compilé avec succès.

basé au large ce que je peux dire de ces réponses, je vais avoir besoin d'être supprimer un tas de méthodes de main.

Mais pour le faire facilement, je dois d'abord supprimer tous les commentaires de mes fichiers GD parce qu'ils sont documentés assidument avec des commentaires à presque toutes les autres lignes

Cette expression régulière correspond à tous les C multi-lignes, y compris leurs délimiteurs et peut vous aider dans votre voyage

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

J'ai passé plus d'une heure à la recherche d'une réponse correcte, mais rien ne fonctionnait pour moi. Enfin, le Xcode elle-même dire quelque chose est dupliqué, alors allez dans ce dossier particulier (dans ce cas: /Users/prithviraj/Documents/project/Final/build/iphone/build/Final.build/Debug-iphonesimulator/Final.build/ objets normaux / i386 / main.o) et supprimer tous les fichiers et vérifier également même dans votre projet si cette catégorie particulière / interface est déclarée deux fois si oui le supprimer.

Après la suppression propre et exécuter le projet.

Il a fonctionné pour moi espérons que cette aide (-_-).

Supprimer dossier /Users/{username}/Library/Developer/Xcode/DerivedData et construire à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top