web-dev-qa-db-fra.com

Le module compilé avec Swift 4.0 ne peut pas être importé dans Swift 4.0.1

Cependant, j'ai recompilé le framework en utilisant le même Xcode et il me donne toujours cette erreur.

  • SDK de base iOS 11.1 pour les deux
  • Swift Language Version Swift 4.0 pour les deux
  • N'utilise pas de Pods/Carthage

J'espère que quelqu'un saura

75
Simon

Mise à jour:

Pour les versions publiées de Xcode:

Cette erreur (et des erreurs similaires impliquant Swift 4.1, 4.2, etc.) se produira lors de l'ouverture d'un projet avec Xcode 9.1, 9.2, 9.3, 9.4, 10, etc., qui utilise des cadres créés avec Xcode antérieur. outils.

Pour résoudre le problème, mettez à jour et reconstruisez vos infrastructures à l'aide de Carthage (carthage update --platform iOS), de Cocoapods (pod update ou pod install), ou manuellement, à l'aide des nouveaux outils Xcode mis à jour. Les outils doivent être mis à jour automatiquement lors de la mise à jour de Xcode. Sinon, vous pouvez suivre les étapes décrites ci-dessous dans la réponse d'origine.

Vous devrez peut-être également nettoyer votre projet cmd + shift + k et éventuellement votre dossier de construction cmd + option + shift + k pour que Xcode n'utilise pas les versions de structure mises en cache.

Dans certains cas, vous devrez peut-être également supprimer votre dossier de données dérivé (facilement trouvé en allant dans Préférences Xcode -> Emplacements -> Dossier de données dérivées ( Merci Stunner )

Pour les versions bêta de Xcode:

Voir la réponse originale ci-dessous, puis suivez les étapes ci-dessus.

Réponse originale:

Vous avez probablement encore vos outils xcodebuild définis sur Xcode 9.0, qui est construit avec Swift 4.0 et incompatible avec la version de Xcode 9.1 beta Swift 4.0.1.

Enregistrez le terminal à l'aide de la commande:

xcodebuild -version

Ou bien, allez simplement dans les préférences Xcode -> Emplacements et vérifiez/modifiez les outils de ligne de commande en Xcode 9.1. Vous devriez être réglé alors.

122
Zig

Mon problème était dû à un framework externe non compilé pour Swift 4.0.2. J'avais ajouté ce fichier via Carthage , donc, en cours d'exécution:

carthage update --platform iOS

Ensuite, nettoyer le projet cmd + shift + k et construire le dossier cmd + option + shift + k, puis supprimer le dossier de données dérivé (le déplacer simplement vers la corbeille fonctionne également).

22
Stunner

Installez Xcode Toolchain de la version spécifique de Xcode qui travaillait pour vous à partir de ici .

Une chaîne d’outils Xcode comprend une copie du compilateur, de lldb et d’autres outils connexes nécessaires pour offrir une expérience de développement cohérente permettant de travailler dans une version spécifique de Swift.

Ouvrez les préférences de Xcode, accédez à Composants> Chaînes d'outils, puis sélectionnez la chaîne d'outils installée Swift.

Cela vous permettra de compiler et d'exécuter l'application pour l'instant.

9
Tina

J'ai frappé ce problème avec Xcode 10 beta, qui ajoute Swift 4.2. Mon problème n'était pas lié à Carthage ni à aucune dépendance externe.

Allez à YourTarget > Build Settings > Swift Language Version pour toutes vos cibles Xcode.

Les miens étaient tous réglés sur Swift 4.

Après avoir ajouté une phase de construction des fichiers de copie, j'ai commencé à avoir l'erreur

: 0: erreur: module compilé avec Swift 4.1.2 ne peut pas être importé par le compilateur Swift 4.2:/Utilisateurs/utilisateur/Bibliothèque/Développeur/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/MyAppExtension.build/Objects-normal/x86_64/MyClass ~ partial.swiftmodule

La commande MergeSwiftModule a échoué avec un code de sortie différent de zéro

Je règle ensuite le Swift Language Version de chaque cible sur Swift 4.2, ce qui élimine l'erreur.

Cependant, je ne suis pas sûr de savoir pourquoi l'erreur s'est produite, car le fait que toutes les cibles soient définies sur Swift 4 devrait être tout aussi valable.

6
pkamb

Dans mon cas, j'ai téléchargé la version bêta de xCode 11 pour tester SwiftUI. Quand je lance mon projet, j'ai "Le module compilé avec Swift 5.1 ne peut pas être importé par le compilateur Swift 5.0.1: ..." erreur.

Pour résoudre ce problème. J'ai changé l'outil de ligne de commande xCode en nouvel outil de ligne de commentaire xCode 11. Après cela, vous pouvez créer un nouveau projet xcode avec SwiftUI.

Xcode -> Préférences -> Emplacement -> Outil de ligne de commande XCode

Xcode Commend Line Tool

j'espère que cela aidera quelqu'un qui veut tester avec de nouvelles fonctionnalités :)

4
Emre Gürses

Dans mon cas (Xcode 9.2):

Je suis allé à Xcode Preferences > Locations > Derived Data

J'ai ensuite supprimé les données et fait une compilation propre et j'étais ok.

3
user3288482