web-dev-qa-db-fra.com

Pourquoi l'éditeur de liens lie-t-il des bibliothèques statiques avec des erreurs? iOS

J'ai du mal à lier mon framework de langage mixte à un projet.

1) Je crée un cadre avec les classes Swift et Objective-C.

2) La logique principale était stockée dans un fichier Swift. Par exemple, la classe avec la méthode qui appelle NSLog ("Le journal Swift a été appelé").

3) Le fichier Objective-C a une classe qui a une méthode dans laquelle je crée une instance de la classe Swift et appelle la méthode Swift-log.

4) Je lie ce cadre à mon projet Objective-C, je peux appeler tout ce dont j'ai besoin dans ce projet, mais quand je veux construire ce projet, je reçois une erreur "linker command failed with exit code 1 (use -v to see invocation)"

Et des avertissements:

ld: warning: Could not find auto-linked library 'swiftFoundation'

ld: warning: Could not find auto-linked library 'swiftDarwin'

ld: warning: Could not find auto-linked library 'swiftCoreFoundation'

ld: warning: Could not find auto-linked library 'swiftCore'

ld: warning: Could not find auto-linked library 'swiftCoreGraphics'

ld: warning: Could not find auto-linked library 'swiftObjectiveC'

ld: warning: Could not find auto-linked library 'swiftDispatch'

ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'

J'ai également vu la solution avec l'importation de fichier Swift vide, mais il était nécessaire de faire un projet sans aucune corbeille.

12
Yaroslav Skachkov

Apparemment, pour les projets objectifs-c purs, vous devrez ajouter ce $ (TOOLCHAIN_DIR)/usr/lib/Swift/$ (PLATFORM_NAME) aux chemins de recherche de la bibliothèque de votre cible. Cela a fonctionné pour moi alors que j'incluais une bibliothèque écrite en Swift dans un projet de objective-c

22
Nathan

Essayez cette solution de contournement https://stackoverflow.com/a/50495316/1658268

Fondamentalement, ajoutez simplement un fichier fictif Swift dans votre projet et relancez la construction.

3
SudoPlz

J'ai les mêmes erreurs lors de la compilation accidentelle d'un projet avec un instantané Swift 5.0 configuré dans les préférences Xcode »Composants» Boîte à outils.

2
Ralf Ebert
  1. Ouvrez ios/YourAppName.xcodeproj dans Xcode
  2. Cliquez avec le bouton droit sur le nom de votre application dans le navigateur de projet à gauche, puis cliquez sur Nouveau fichier…
  3. Créez un seul fichier Swift vide dans le projet (assurez-vous que la cible Votre nom d'application est sélectionnée lors de l'ajout)
  4. quand Xcode vous le demande, appuyez sur Créer un en-tête de pontage et ne supprimez pas le fichier Swift, puis . réexécutez votre construction.

Cela devrait résoudre le problème

2
Hussam Kurd