2009-08-18 7 views
2

Mon projet fonctionnait bien tout le temps, aujourd'hui j'ai ajouté une bibliothèque admob à mon projet et maintenant il ne compilera pas!Symbole en double bizarre dans le projet sdk iPhone lors de la compilation?

Voici l'erreur:

ld: duplicate symbol .objc_category_name_NSCharacterSet_NSCharacterSet_Extensions in /Photo/libAdMobSimulator.a(NSCharacterSet_Extensions.o) and /Photo/build/Photo.build/Debug-iphonesimulator/Photo.build/Objects-normal/i386/NSCharacterSet_Extensions.o 

Comment réparer?

Répondre

1

Vous avez une catégorie NSCharacterSet_Extensions sur NSCharacterSet définies dans les deux libAdMobSimulator et dans votre code dans la photo (app/paquet)

Vous devez vous assurer que le nom de la catégorie est unique renommer par exemple une de ces catégories.

0

Avez-vous utilisé #include pour un fichier d'en-tête au lieu de #import? Je ne suis pas sûr que cela s'appliquerait dans ce cas, mais c'est une façon d'obtenir des symboles en double.

2

juste comme une note de suivi: j'ai eu cette erreur car j'avais inclus la bibliothèque populaire de touchjson. la bibliothèque admob vient avec sa propre copie, et c'est ce qui a causé le choc pour moi. Retirez votre copie de la bibliothèque de Touchjson de votre projet et vous êtes prêt à partir.

0

Une fois, j'ai eu cette erreur quand j'ai fait l'erreur stupide de changer mes fichiers .h et .m dans une catégorie que j'avais faite. J'espère que cela aidera quelqu'un à faire de même :)

2

J'ai eu le même problème, pour la même raison, regardé partout et c'était la solution.

ObjC et -all_load doivent figurer dans les «Autres indicateurs de lieur» de TARGET. Si vous avez le même problème, vous le saurez car si les catégories sont maintenant liées avec succès, votre application ne se construira pas à cause de certains «symboles en double».

Dang.

Mais attendez - comme JDEE souligne:

i got this error as I had included the popular touchjson library. the admob library comes with its own copy

et la suppression de la copie de TouchJSON vous avez inclus en effet ne éclaircir la question.

Encore ... ce n'est pas idéal. Je suis sûr que la version de TouchJSON est bonne, mais j'aimerais vraiment pouvoir la mettre à jour dans le futur.

This guyThis guy trouvé une autre solution, mais cela implique de renommer tout ce que vous utilisez de TouchJSON. Pas idéal.

Je suis à court, en ce moment, mais heureusement, je ne suis pas à court de solutions rapides. Pourtant, il serait bon d'entendre de l'un de vos cerveaux de monstres là-bas comment vous éviteriez de tomber dans ce genre de conflit si vous étiez le développeur d'une bibliothèque statique populaire.

Je commence une autre question à ce sujet. Voyez si nous pouvons avoir un sens autour de ces parties.

MISE À JOUR:

Laissez les fichiers d'en-tête de votre copie de TouchJSON dans votre projet. Supprimez les fichiers d'implémentation, vous ne créerez aucun fichier objet, vous ne créerez aucun conflit. Merci à this post about a similar conflict involving cocos2d pour l'indice final sur celui-ci.

Questions connexes