web-dev-qa-db-fra.com

symboles en double pour l'architecture armv7

Obtenir l'erreur suivante lorsque vous essayez d'utiliser Layar SDK dans mon application existante. Comment puis-je résoudre ça?

Ld /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos/hub.app/hub normal armv7
    cd /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub
    setenv IPHONEOS_DEPLOYMENT_TARGET 5.0
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -L/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/ZBarSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Infosound/Lib -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/CrittercismSDK -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/UserVoiceSDK-2.0.4 -L/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/Libraries -F/Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos -F/Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub -filelist /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Intermediates/hub.build/Debug-iphoneos/hub.build/Objects-normal/armv7/hub.LinkFileList -dead_strip -ObjC -all_load -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=5.0 -lMPOAuthMobile -lsbjson-ios -framework LayarSDK -framework Social -framework AddressBook -framework AddressBookUI -framework UIKit -framework QuartzCore -framework Twitter -framework SystemConfiguration -framework Security -framework OpenAL -framework OpenGLES -framework MessageUI -framework MediaPlayer -framework Foundation -framework CoreGraphics -lc++ -framework CoreTelephony -framework CoreVideo -framework CoreMotion -framework CoreMedia -framework CoreLocation -framework CoreData -framework CoreAudio -framework CFNetwork -framework AVFoundation -framework AudioToolbox -lxml2 -liconv -lz -framework MobileCoreServices -lzbar -linfosound -lCrittercism_v3_4_6 -lUserVoice -o /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Products/Debug-iphoneos/hub.app/hub

duplicate symbol _jpeg_free_large in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_free_small in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_get_large in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_get_small in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_available in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_init in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_mem_term in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_open_backing_store in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemname.o)
duplicate symbol _jpeg_free_large in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_free_small in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_get_large in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_get_small in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_available in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_init in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_mem_term in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _jpeg_open_backing_store in:
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemansi.o)
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jmemnobs.o)
duplicate symbol _main in:
    /Users/pnawale/Library/Developer/Xcode/DerivedData/hub-afxxzaqisdfliwbzxbixsaifljcl/Build/Intermediates/hub.build/Debug-iphoneos/hub.build/Objects-normal/armv7/main.o
    /Users/pnawale/Documents/Paresh/Yamaha_iPhone/Code/Final/hub/LayarSDK.framework/LayarSDK(jpegtran.o)
ld: 17 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
42
Paresh

Cela peut arriver si vous avez accidentellement #import un fichier .m au lieu du .h!

121
Adrian Bigland

Généralement, ce type d'erreur est dû à des classes et des xibs dupliquées dans votre dossier de projet. Par exemple, dans mon projet, certains fichiers de classe ont été dupliqués (fichiers .h/.m). Vous pouvez voir ces classes en double sous target->Build phases->compile sources.

Il suffit de regarder et de supprimer les cours supplémentaires. Le problème sera résolu.

81
Vishal

Cela se produit avec des variables statiques dans un fichier d'en-tête (fichier d'en-tête inclus dans plusieurs fichiers d'implémentations).

51
Jeff Lawson

J'avais cette erreur parce que j'ai utilisé les drapeaux d'avertissement recommandés par Xcode. GCC_NO_COMMON_BLOCKS = OUI était à l'origine du problème. Remettre à NO l'a corrigé pour moi. 

17
pulse4life

Cette erreur peut également être provoquée si vous avez des importations cycliques .... supposons que vous ayez VC1.h, VC2.h et VC3.h

exemples générant l'erreur: (tous sont les fichiers .h)

  • Si VC2 importe VC1 et VC1 importe VC2
  • Si VC1 importe VC2 et VC2 importe VC3 et VC3 importe VC1

Solution:

  • importer à l'intérieur du .m au lieu du .h
  • si le .h a besoin de cette classe, utilisez @class (nameOfClass); au lieu d'importer le .h

Faites attention lorsque vous utilisez #import, importez uniquement ce dont vous avez besoin.  

7
user2387149

Soyez prudent si vous utilisez Cordova iOS 4.5.0, une erreur de ce type peut se produire.

duplicate symbol _OBJC_METACLASS_$_CDVLogger in:
   /Users/toto/Library/Developer/Xcode/DerivedData/imp-hkzujazvkracgugyxunzwnzpeiqx/Build/Intermediates/imp.build/Debug-iphoneos/imp.build/Objects-normal/armv7/CDVLogger.o
   /Users/toto/Library/Developer/Xcode/DerivedData/imp-hkzujazvkracgugyxunzwnzpeiqx/Build/Products/Debug-iphoneos/libCordova.a(CDVLogger.o)

ld: 2 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Cela peut être dû à l'utilisation de cordova-plugin-console, qui n'est plus utile dans Cordova iOS 4.5.0 (et casse également la construction!).

Réparer

cordova plugin remove cordova-plugin-console

Voir référence: https://cordova.Apache.org/announcements 2017/09/08/ios-release.html

6
pom421

J'ai déjà fait face à ce problème une fois. La raison en est que j'ai copié certaines méthodes et variables déclarées dans le corps de l'implémentation d'une classe à une autre. Donc, renommez ces méthodes et déplacez-les dans la zone de déclaration de l'interface => résolue.

4
Envil

Je voyais le même problème, mais avec des bibliothèques différentes. Le correctif était le suivant:

Target -> Build Phases -> Linked Binary With Libraries

Assurez-vous que les bibliothèques incluses ont du sens. Dans mon cas, mon projet avait libPods * .a (j'utilise CocoaPods pour la gestion de la dépendance) mais également quelques bibliothèques incluses dans mes bibliothèques partagées dans le pod, ce qui était à l'origine des doublons.

2
josephmisiti

Mon problème était ... étrange. Je ne sais pas comment cela s'est passé, mais à un moment donné, Xcode a décidé d'inclure une fois de plus l'ancien fichier .m dans son fichier .pbxproj. La seule façon pour moi de le trouver était en comparant mes modifications dans git, en regardant la version du code où la première compilation avait échoué.

Le simple fait de supprimer cette ligne a résolu mon problème:  A sample of a git changeset, with one file added and zero removed.

1
Ben Leggiero

Je viens de corriger cette erreur. J'ai eu CocoaPods installant quelques frameworks (AWS, SDWebImage, AFNetworking. J'ai glissé manuellement dans 2 frameworks, Facebook et ImageIO. La plupart de mes erreurs de "symbole dupliqué" ont été interceptées sur des classes Facebook. J'ai supprimé le framework et l'a ajouté au fichier podfile. Doit avoir été une erreur ou une duplication dans les bibliothèques requises par Facebook.

1
Anna Billstrom

J'avais des fichiers en double dans mon Xcode. Physiquement, il y avait un fichier m et un fichier h. Mais dans le projet il a été doublé, causant des doublons dans les sources de compilation . Après la suppression des doublons, le problème de fichier m et h a été résolu.

0
Mansurov Ruslan

C'est parce que le simulateur iPhone a des références en double .h & .m. J'ai lutté pendant des heures pour ce bogue.

Ma solution était simple. J'ai copié le projet sur ma clé USB et l'ai effacé de la mémoire de l'ordinateur.

A ouvert un nouveau projet, copié le storyboard et ajouté les fichiers .h & .m. Certaines erreurs ont été corrigées en sélectionnant à nouveau les classes dans la vue storayboard.

0
Alvin G

J'ai aussi eu des symboles en double. Je viens de renommer la procédure (app -> app1, app2) et les champs associés app.XXX -> app1.XXX. et ça a fonctionné!

Voir: (dans un fichier .m)

AppDelegate* app1;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        app1 = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    }
    return self;
}

(...)

- (int) getLimit
{
    if (app1.product2buyed)
        return MAXID;
    else if (app1.product1buyed)
        return 70;
    else
        return 10;
0
Tanos

VOUS POURRIEZ AVOIR INSTALLÉ DES PLUGINS SIMILAIRES. 

J'utilise Cordova et j'ai également eu plusieurs erreurs de symbole en double. J'avais installé deux plugins similaires:

  • cordova plugin email compositeur
  • cordova plugin email

Corrigé en supprimant "l'email du plugin cordova" en utilisant ...

cordova plugin remove cordova-plugin-email

Après ça j'ai couru ...

cordova prepare
cordova build ios

Maintenant, ma construction xCode a fonctionné comme un charme! Woooo Hooo!

0

Veuillez vérifier si vous avez ajouté un cadre plus d'une fois, supprimez-le s'il a été ajouté plusieurs fois, puis faites-le glisser à nouveau.

J'espère que cela résoudra votre problème. Bon codage.

0
Tejinder