dyld: bibliothèque non chargée: @ rpath / libswift_stdlib_core.dylib


205

J'obtiens cette erreur après avoir ajouté une classe Swift à un ancien projet Xcode.

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

Comment puis-je relancer le projet?


Vous pourriez également vouloir regarder stackoverflow.com/questions/38364320 qui montre comment déboguer cela en utilisantotool
Jim Hayes

2017 - incroyablement, le simple redémarrage de Xcode a résolu ce problème odieux pour moi.
Fattie

Réponses:


152

Pour moi, aucune des solutions précédentes n'a fonctionné. Nous avons découvert qu'il existe un indicateur ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(dans les versions antérieures: "Le contenu incorporé contient du code Swift") dans les paramètres de génération qui doit être défini sur OUI. C'était NON par défaut!


Cela a également été corrigé pour moi, j'ai changé le paramètre de l'extension sur true. Le projet est objc mais l'extension est rapide et n'a pas fonctionné dès le début
Cristi Băluță

C'était aussi ma résolution. J'ai un projet d'application iOS existant (ObjC) auquel j'ajoute une extension Today (nouvelle cible dans le projet, l'extension est un plugin pour l'application principale). J'ai dû aller dans les paramètres cibles de l'application et activer ce problème de configuration et d'alto ... disparu. C'est logique, mais étant donné la quantité d'autres choses que Xcode 6.0 configure automatiquement pour vous, c'est dommage que cette option essentielle ait été négligée.
hsoi

Cela a résolu mon problème - nous avions un projet plus ancien avec beaucoup d'ObjC, auquel nous avons récemment commencé à ajouter Swift. Même si l'IPA a été construit et inclut les bibliothèques Swift, il n'a pas fonctionné sur certains appareils iOS7 jusqu'à ce que ce paramètre de construction soit vérifié et que nous ayons fait une nouvelle IPA. Cela a fonctionné sur tous nos appareils en difficulté.
Kendall Helmstetter Gelner

1
Rien n'a fonctionné à part cela. Vous êtes un sorcier bizarre mon bon monsieur!
Ricky Hartmann

2
Le contenu incorporé contient une utilisation obsolète du code Swift ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta

91

Cette erreur peut se produire si quelque chose s'est mal passé pendant la conversion d'un projet Objective-C pour commencer à utiliser Swift. Le problème est que les paramètres de construction de l'éditeur de liens n'ont jamais été configurés correctement, vous devrez donc le faire à la main. Recherchez le paramètre de génération Runpath Search Paths et définissez-le sur:

$(inherited) @executable_path/Frameworks

entrez la description de l'image ici

EDIT: Je dois également ajouter qu'il y a eu récemment une série de ces erreurs causées par autre chose - Apple a fait un changement dans Swift lui-même, en commençant peut-être par Xcode 6.1 ou 6.1.1. La seule solution semble être de quitter Xcode, de détruire vos certificats dans Keychain Access, d'accéder au Member Center et de supprimer tous les certificats et profils (à l'exception des profils pour les applications dans le Store - vous ne pouvez pas les supprimer), puis de démarrer le processus de demande de certificat entier à partir de zéro.


3
A travaillé pour moi. Mise à niveau vers la dernière version de Xcode, et a constaté que ce chemin de configuration dans mon projet conduisait à l'ancienne version.
ObjectiveTC le

1
travaillé!! tu m'as sauvé la journée! J'utilisais un contrôle GitHub rapide dans l'objectif C avec xcode 6 GM. Merci.
imthegiga

1
Cela a également fonctionné pour moi. Le redémarrage de Xcode n'a pas fonctionné.
Dan Loewenherz

1
travaillé pour moi. Btw, j'ai "Reason: image not found" à la fin du message d'erreur.
Peter Zhou

2
Dieu merci! Ça y était!
BoilingLime

79

Je ne sais pas vraiment pourquoi cette question fait l'objet d'un vote négatif, j'ai également eu ce problème lorsque j'ai essayé d'utiliser Swift pour la première fois avec un projet existant. Un redémarrage de Xcode a également corrigé cela pour moi.


20
J'essaie d'utiliser swift dans un nouveau projet iOS et j'obtiens cette erreur lorsque j'essaie de fonctionner sur un appareil iOS 8, mais pas dans le simulateur. Le redémarrage de Xcode, de mon ordinateur portable ou de mon téléphone ne résout pas le problème. N 'y a-t-il pas une autre solution?
David Skrundz

2
Malheureusement, cela n'a pas fonctionné pour moi sous Beta 4, essayant de lancer une application Mac qui utilise un cadre basé sur Swift.
Craig Otis

Veuillez inclure le lien @Developer dans votre réponse, car cela aide vraiment.
Lachezar Todorov

Essayez cela, mais jetez également un nettoyage.
Scott McKenzie

55

J'ai longuement cherché sur cette question. Il existe plusieurs raisons à l'origine de ce problème.

Si vous êtes confronté lorsque vous et le code / bibliothèque Swift dans un projet Objectice C, vous devez essayer la solution 1-2-3

Si vous rencontrez ce problème avec un nouveau projet Swift, la solution 4 vous conviendra le mieux.

Solution 1:

Redémarrez Xcode, puis l'ordinateur et l'iPhone

Solution 2:

Accédez aux paramètres de construction du projet et définissez Always Embed Swift Standard Libraries(précédemment Embedded Content Contains Swift Code) le drapeau surYES

Solution 3:

Accédez aux paramètres de construction du projet et ajoutez @executable_path/Frameworksà l' Runpath Search Pathsoption

Solution 4:

Si rien de ce qui précède ne fonctionne, cela devrait. Apple semble être des certificats corrigés ninja comme mentionné dans le post d'AirSign

Aux certificats InHouse

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

ils ont ajouté un nouveau champ nommé OU

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

vous devez donc recréer le certificat et l'approvisionnement


1
Annonce 2: elle s'appelle désormais "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES" (voir le commentaire ci-dessous la réponse acceptée).
Raphael

1
Je voulais ajouter ... les projets macOS nécessitent @executable_path/../Frameworksoù les projets iOS l'exigent sans ..le milieu. La modification de cette valeur est importante si vous avez converti une cible d'un système d'exploitation à l'autre.
Matt Gallagher

41

Dans mon cas, j'essayais d'importer un cadre personnalisé et j'obtenais l'erreur similaire. Il s'avère que j'ai dû importer le cadre dans les fichiers binaires intégrés plutôt que dans les cadres et bibliothèques liés.

Les fichiers binaires intégrés se trouvent sous Paramètres des projets -> -> Général


J'ai sauvé ma journée! Impressionnant!
Klaas

1
Je voyais cette erreur lorsque j'essayais d'utiliser un cadre compilé écrit en swift (au lieu d'incorporer les fichiers source comme cible distincte). La solution ci-dessus a également fonctionné pour moi.
alex da franca

Merci beaucoup, J'ai sauvé ma journée entière.
Badrinath

1
A travaillé pour moi après avoir essayé de lier un cadre partiellement écrit en swift dans un ancien projet qui était entièrement objectif-c. Le paramètre était en fait sous les paramètres de construction. Plus d'informations ici: stackoverflow.com/questions/24163870/…
Pellet

C'est sous Paramètres cible, pas projet, juste pour être sûr.
Legoless

16

Pour les développeurs qui ont eu ce problème avec une version de distribution Adhoc / Enterprise,

Créez le certificat de production à partir du portail de développement, puis régénérez le profil de distribution. Téléchargez et installez les deux sur votre Mac. Assurez-vous d'avoir sélectionné le bon profil dans vos paramètres de construction Xcode et reconstruisez votre application.

Source: https://devforums.apple.com/message/1022908#1022908


Bien que ce lien puisse répondre à la question, les liens se brisent. En tant que tel, il est recommandé d'inclure les éléments clés du lien. Les réponses de lien uniquement ne sont pas recommandées.
Pokechu22

A travaillé pour mon application d'entreprise. Merci!
sylvanaar

15

Solution 5:

Dans mon cas, toutes les solutions mentionnées dans la réponse de accfews ont été très utiles mais aucune n'a fonctionné. J'ai résolu mon problème en ajoutant ma bibliothèque Swift dans la section "Binaires intégrés" de la section "Général" de la cible de mon projet. Peut-être est-ce dû au fait que j'ai inclus mon framework rapide dans mon espace de travail? Quoi qu'il compile maintenant! Préparez-vous Swift, je suis ici!


OK, cela semblait fonctionner. J'essaie juste d'écrire une bibliothèque de code rapide pour un projet rapide. D'une certaine manière, je me demande toujours si c'est correct. Cependant, je suis ravi de son fonctionnement.
kpierce8

J'avais inclus mes frameworks dans la section "Copy Frameworks" de l'onglet Build Phases - mais un framework n'a pas pu être sélectionné ici. Le "Général" a permis la sélection de cet autre cadre et l'a ajouté dans les phases de construction, et l'application se construit et s'exécute. Curieusement, je pouvais toujours exécuter l'application sur le simulateur.
djbp

Merci Christophe. Comme vous, vous avez essayé toutes les solutions, et il n'était clairement pas intuitif de comprendre qu'une bibliothèque rapide ne peut pas être simplement glissée d'un projet à un autre. Vous avez clairement besoin de mettre la bibliothèque dans la section intégrée (aka plus clairement le module rapide, je doute qu'il puisse y avoir un autre type de contenu intégré). Même si Xcode pouvait le détecter automatiquement et faire le travail pour nous ... Mais ce n'est pas la tâche de notre XCode bien-aimé;), définitivement ici pour perdre notre temps ...
M. Bonjour

De plus, si la bibliothèque est déjà dans la liste, assurez-vous qu'elle est marquée comme "Embed & Sign". Cela résout mon problème.
SquareBox

10

Un simple redémarrage de Xcode a résolu le problème pour moi.


Je vais gifler le prochain fanboy d'Apple qui se moquera de la réinitialisation de Windows
Josh

5

Pour moi, le problème était dû au fait que mon autorité de certification Apple Worldwide Developer Relations n'était pas valide.

Téléchargez-le à partir d'ici: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Glissez-déposez-le dans Keychain Access, nettoyez le projet et exécutez.


Cela a commencé après que nous ayons ajouté le droit CloudKit. Avant cela, je suppose que peu importait que le certificat WWDR soit invalide.
CommaToast

3

J'avais un projet Obj-C où j'ai commencé à ajouter des fichiers source rapides. Les problèmes suivants ont résolu le problème pour moi:

  1. Mise en relation: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Swift Compiler - Génération de code: EMBEDDED CONTENT CONTAINS SWIFT = YES

Je viens de créer un nouveau projet à partir des modèles Xcode 6.3 et j'ai comparé les paramètres du projet avec mon ancien projet d'origine.


3

Essayez de maintenir Alt, puis allez dans Produit -> Clean Build Folder ...

J'espère que cela aidera quelqu'un ..


Cela ne fournit pas de réponse à la question. Une fois que vous avez une réputation suffisante, vous pourrez commenter n'importe quel message ; fournissez plutôt des réponses qui ne nécessitent pas de clarification de la part du demandeur . - De l'avis
Rakete1111

Cela s'est produit après avoir essayé d'ajouter une nouvelle classe dans un ancien projet. Il n'y a aucune information sur l'ancien projet. Ainsi, l'effacement du projet et le rafraîchissement forcé du cache ont du sens. L'ancien projet implique également qu'il y a de fortes chances que le certificat soit modifié entre-temps, car les certificats Apple Production et Developer expirent chaque année. Lisez à propos de la principale raison de l'erreur selon Apple Q&A technique à. developer.apple.com/library/ios/qa/qa1886/_index.html . La même chose m'est arrivée et Clean Build Folder fait relancer le projet. Laissez les gens essayer ..
stakahop

C'est arrivé juste après avoir rechargé mon certificat iOs. Un simple Clean (menu Produit) et tout fonctionne bien ;-)
Sébastien REMY

Fonctionne parfaitement. Je vous remercie.
iSofia

3

Les raisons de cette situation sont multiples. Après avoir passé un week-end amusant à trouver un autre problème à l'origine de cela (l'ordre de signature du code), j'ai voulu créer une réponse résumée qui rassemble toutes les solutions possibles:

  1. Ajouter un contenu incorporé contient du code Swift au projet. Vous devez définir ce drapeau si votre application contient du code Swift.
  2. Projet propre . En plus d'un projet> nettoyer, vous pouvez également supprimer les répertoires DerivedDataet Build. Regardez sous les Préférences pour l'emplacement de DerivedData. Builddevrait être dans votre dossier de projet.
  3. Assurez-vous que Runpath Search Paths contient@executable_path/Frameworks .
  4. Assurez-vous que votre certificat contient votre identifiant d'équipe Apple dans le champ OU (unité d'organisation) Apple l'ajoutera pour vous, il suffit de révoquer votre certificat de distribution existant et d'en créer un nouveau, de le télécharger, de l'installer sur KeyChain, de régénérer tous les profils d'approvisionnement, de les télécharger et reconstruire.
  5. Redémarrez Xcode. Si tout va bien, mais Xcode n'y est pas encore arrivé.

Voilà la chose facile. Si vous créez votre propre ligne de commande, vous créez peut-être vos propres .ipafichiers à télécharger. Dans ce cas, vous devez vous assurer des éléments suivants:

  1. Assurez-vous que la version des fichiers Swift dans SwiftSupport/iphoneosest identique à la version dans la mesure oùContents/YourApp.app/Frameworks Swift n'est pas encore compatible binaire entre les versions, vous devez vous assurer que ces versions sont celles avec lesquelles vous avez créé votre application. Vous pouvez trouver ces bibliothèques sous /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos.
  2. Signez les bibliothèques et les cadres premier . Vous devez d'abord codesignaccéder aux bibliothèques et aux fichiers de framework (sous Frameworksdans le .appdossier), puis signer l' .apparborescence entière . L' .apparbre doit être signé avec un entitlements.plistmais pas avec les frameworks.

Espérons que lorsque Swift 3.0 sortira et que nous n'aurons plus besoin de regrouper Swift avec nos applications, tout ce problème disparaîtra.


2

J'ai eu ce problème en utilisant une fourniture mobile Ad Hoc (ou entreprise) avec un certificat de production. Le passage à un certificat de développement et à mobileprovision a résolu le problème.


4
Cela peut vous permettre d'exécuter l'application en cours de développement, mais comment allez-vous déployer si un profil ad hoc ou d'entreprise ne fonctionne pas?
Kristopher Johnson

2

Mon projet est un projet Swift avec quelques classes Objective-C. J'ai eu le même problème lors de la signature avec l'ancien certificat inHouse (entreprise).

Les étapes suivantes ont résolu ce problème pour moi.

  1. Créez et utilisez un nouveau certificat et une nouvelle disposition mobile.
    (Réf. Blog AIRSIGN )
  2. Définir Runpath Search Pathsparamètre de construction à: $(inherited) @executable_path/Frameworks.
    ( Réponse de Matt . )

2

Solution 6:

Dans notre cas, le certificat de distribution d'entreprise a été révoqué. La génération d'un nouveau certificat et la mise à jour du profil d'approvisionnement ont résolu le problème.

(Il semble y avoir de nombreuses causes différentes à cette erreur. J'espère que cela aide quelqu'un.)


Cela a résolu mon problème. Putain de merde quelle perte de temps à essayer de résoudre ce problème. J'espère que cela résout les problèmes des autres utilisateurs. J'ai pu déboguer mon application avec mon framework personnalisé mais je n'ai pas pu exécuter la version de la machine de génération sur jenkins. La révocation de mes certificats de distribution et la génération d'un nouveau profil d'approvisionnement d'entreprise ont corrigé les builds pour moi.
cynistersix

2
C'est la même chose avec la Solution 4
accfews

2

J'ai essayé toutes les réponses données ci-dessus, rien n'a fonctionné.

Enfin travaillé après la mise à jour vers Yosemite


2

J'ai rencontré le même problème, la définition de la bonne identité de signe de code a résolu le problème (Paramètres de construction-> Identité de signature de code).

Selon la question technique d'Apple "Tous les certificats de développeur iOS et d'entreprise standard qui sont créés après la sortie d'iOS 8 ont le nouveau champ ID d'équipe au bon endroit pour permettre aux applications en langue Swift de s'exécuter"


2

Si vous ajoutez les trois cadres via les fichiers binaires intégrés, ils seront également ajoutés aux cadres et bibliothèques liés. Supprimer les trois entrées dans les cadres et bibliothèques liés résoudra le problème.

Les méthodes magiques telles que relancer Xcode et redémarrer le Mac ne fonctionnent pas sur moi.


Merci d'avoir amélioré le format. Ça a l'air mieux. "Frameworks et bibliothèques liés" est une section, pas deux. Je change "et" en gras. @ Bartłomiej
Arbipher

特 来 shua fen zi shu bu ding
icemelon

2

Ajout du cadre en tant que «binaire intégré» au lieu de simplement «cadres et bibliothèques liés» - Correction de mon problème.

J'ai également défini le contenu incorporé contenant le code Swift sur OUI.


1

Mise à niveau vers la dernière version d'OS X (Yosemite)

Après des heures d'essais et d'erreurs, je suis parvenu à la résolution de ce problème. - Si cela s'applique à votre cas, bien sûr.

J'ai eu le même problème jusqu'à ce que je mette à jour mon Mac OS X de Mavericks à Yosemite. - Il a résolu mon problème, j'espère qu'il corrige aussi le vôtre


1

J'ai essayé toutes les solutions trouvées sur le Web, y compris pour Apple et les nouveaux certificats. Sans succès.

La seule façon dont je pouvais exécuter xcode, après 6 mois d'essais, était de créer un nouveau compte sur mon macbook.


1

Habituellement, cette erreur disparaîtra si vous ajoutez cette bibliothèque au segment "Copier les fichiers" dans vos phases de construction.


Cela a fonctionné pour moi sur XCode 7.2.1. J'ai utilisé le + dans le panneau Build Phases, sélectionné New Copy Files Phase, puis j'ai fait glisser le cadre de l'arborescence de l'espace de travail dans la section Copy Files. Enfin, j'ai sélectionné Destination: Frameworks. Après une build propre, mon application a démarré comme prévu.
Rob Smallshire

1

Et si tout ce qui précède ne vous aide pas et que vous vous sentez vraiment frustré ... Essayez la meilleure astuce de toutes: Cleanet juste pour être sûr aussi Clean Build Folder. :) J'espère que ça aide quelqu'un!


1

Aucune de ces solutions ne semblait fonctionner systématiquement pour moi; après chaque cycle réussi, il échouait à nouveau. Le drapeau "Le contenu incorporé contient du code Swift" a toujours été défini sur OUI pour moi.

Il s'avère que je définirais Xcode pour être compatible 6.3. Le changer de nouveau pour être compatible 3.2 l'a résolu:


Je vous remercie! J'ai essayé tout le reste. Je l'ai changé en 3.2, nettoyé le projet, redémarré Xcode et cela a fonctionné
gabriellanata

1

J'ai aussi eu ce problème, mais il ne localisait pas libswiftXCTest.dylib.

La solution était d'ajouter XCTest.frameworkà la cible Tests, en Build Phases/Link Binary with Library. J'obtenais cette erreur même lorsque j'essayais de construire la cible principale.


0

Cela est apparu lorsque j'ai ajouté une nouvelle cible d'extension Aujourd'hui avec le langage Swift à un ancien projet. Fixé facilement en mettant à jour le projet aux paramètres recommandés. Xcode 6.0.1


0

J'ai eu le même problème en utilisant Mavericks, Xcode 6.1.1, en testant sur un iPhone5 avec iOS 8.1.1. J'ai essayé toutes les solutions possibles, y compris les nouveaux certificats et les profils d'approvisionnement, mais rien n'y fait. Je l' ai fait les changements Embedded Content Contains Swift Codeet à la Runpath Search Pathsfois au niveau du projet et le niveau cible.

J'ai maintenant installé Yosemite, et sans aucun autre changement, il a commencé à fonctionner.


0

Même problème ici, pour moi, c'était Crashlytics / Fabric / Beta / Twitter / Peu importe comment ils s'appellent eux-mêmes téléchargeant un binaire qui manquait les cadres intégrés. Si j'ai créé une archive puis exporté une version Enterprise de la manière standard, cela a fonctionné.


0

Mon environnement: Cocos2d 2.0, Box2d, Objective C

En plus de faire les autres réponses ci-dessus, je suis finalement allé dans l'onglet Général et j'ai rendu WatchKit facultatif.

Cibles: Général: Cadres et bibliothèques liés: WatchKit.framework: Facultatif


0

Après des mois et des mois à tout essayer ici ... Définition de la folie ... démarrer Xcode sous un nouvel utilisateur Mac l'a résolu pour moi.

J'ai supprimé ~ / Library / Developer / * et réinstallé Xcode- donc je ne sais pas quoi d'autre formater pour le faire fonctionner.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.