6
votes

iOS - 2 symboles en double pour l'architecture armv7

J'utilise Resty partout dans mon projet, mais je dois maintenant télécharger une image Pour serveur, j'essaie donc d'ajouter un autre cadre appelé Restkit pour gérer le téléchargement de fichier. Mais quand j'ai compilé, il a eu une erreur:

duplicate symbol _NewBase64Decode in:
    /Users/iforests/Library/Developer/Xcode/DerivedData/Owlch-gnysrakcbhsgkubbjjjfbahlocqi/Build/Products/Debug-iphoneos/libRestKit.a(NSData+Base64.o)
    /Users/iforests/Documents/iOSworkspace/Owlch/LRResty.framework/LRResty(NSData+Base64.o)
ld: 2 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)


2 commentaires

Pour le bénéfice des autres: j'avais cette erreur après avoir supprimé certaines classes que je n'avais plus besoin. Je devais faire un nettoyage avant de pouvoir compiler avec succès.


Essayez ceci: Stackoverflow.com/a/42089897/3024579


6 Réponses :


4
votes

Supprimez ces fichiers de la source restante.

LrResty / Classes / Catégories / Nsdata + Base64.h Lrresty / Classes / Catégories / Nsdata + Base64.M

qui prendra soin du problème de liaison.

Si cela cesse de fonctionner à cause de cela, renommez les fichiers et la catégorie pour Nsdata + base64 dans le code de repos, puis n'importe où le code de repos importe "nsdata + base64.h", modifiez l'importation dans tout ce que vous renommez la catégorie


0 commentaires

1
votes

Le problème est que les deux bibliothèques définissent la même méthode: NewBase64Decode.

Vous pouvez donc modifier le code source d'une bibliothèque d'une seule bibliothèque et modifier le nom de la méthode sur quelque chose d'autre comme "RKNewBase64Decode". N'oubliez pas d'apporter des modifications dans le fichier * .m également où une méthode NewBase64Decode est invoquée!


0 commentaires

4
votes

Je suis également venu avec la même erreur. Généralement, ce type d'erreur est dû à des classes en double et à XIBS dans le dossier de projet. Par exemple, dans mon projet, j'ai eu ces classes deux fois serviceRequest.h / .m . Débarrassez-vous des duplicataires et vous êtes prêt à partir.


0 commentaires

1
votes

En outre, j'ai noté, si vous avez stupidement une .m, supprimez l'importation.


0 commentaires

5
votes

Il suffit d'avoir cette question lors de l'importation d'une nouvelle bibliothèque dans un projet existant (ancien) - révèle que le problème était l'indicateur de liaison -all_load qui était (pour une raison quelconque) fixé toujours dans le "< Strong> Réglages de construction - Liaison - Autres drapeaux de liaison "en Xcode.

Après avoir supprimé ce drapeau, tout est parti bien.


0 commentaires

0
votes

Cela m'a eu lieu lors de l'importation d'un cadre contenant une classe avec le même nom que dans le projet.


0 commentaires