web-dev-qa-db-fra.com

Il donne des erreurs lors de l'utilisation de Swift Bibliothèque statique avec projet Objective-C

J'ai besoin de faire Swift bibliothèque statique pour mes besoins. J'ai fait Swift bibliothèque statique qui utilise Swift et Obj-c) J'ai inclus des fichiers Obj-c via un fichier bridge. Je peux compiler Swift bibliothèque statique sans aucune erreur et obtenir le fichier libMySwift.a. J'utilise Xcode9.3 avec Swift4 pour compiler la bibliothèque .

J'inclus libMySwift.a dans le projet obj-c et j'ai également inclus un en-tête compatible obj-c pour accéder à ma bibliothèque dans le projet. Lorsque j'essaie de compiler le projet, il donne l'avertissement ci-dessous et plus de 200 erreurs.

Auto-Linking library not found for -lswiftSwiftOnoneSupport
Auto-Linking library not found for -lswiftCore
Auto-Linking library not found for -lswiftQuartzCore
Auto-Linking library not found for -lswiftCoreImage
Auto-Linking library not found for -lswiftCoreGraphics
Auto-Linking library not found for -lswiftObjectiveC
Auto-Linking library not found for -lswiftDispatch
Auto-Linking library not found for -lswiftMetal
Auto-Linking library not found for -lswiftFoundation
Auto-Linking library not found for -lswiftUIKit
Auto-Linking library not found for -lswiftDarwin
Auto-Linking library not found for -lswiftCoreFoundation

Veuillez me faire savoir si je manque des étapes ou si je dois ajouter quoi que ce soit.

15
Vishal Gabani

J'ai la même erreur sur mon projet de démonstration lorsque j'ai ajouté le premier fichier Swift dans mon pod compilé en bibliothèque statique. Pour moi, la solution était simple - il suffit d'ajouter un fichier Swift vide à mon projet de démonstration qui était auparavant uniquement en Objective-C. Cela a résolu toutes les erreurs de l'éditeur de liens.

52
Alex Roslyakov

Une mise à jour de la réponse d'Alex:

Dans mon cas, il s'agissait d'un projet React-Native après l'ajout d'une bibliothèque de pods Swift. Peut-être que l'étape 2 peut fonctionner:

  1. Ajout d'un nouveau fichier Swift et d'un en-tête Brigde:

1) File -> New -> File<code>File -> New -> File</code>

2) Sélectionnez Swift FileSelect <code>Swift File</code>

3) Confirmez Create Bridging Headerenter image description here

  1. Aller à Build Settings Et mettre Always Embed Swift Standard Libraries à YESAlways Embed Swift Standard Libraries
8
AlVelig

Cette réponse a fonctionné pour moi: Ajoutez $(TOOLCHAIN_DIR)/usr/lib/Swift/$(PLATFORM_NAME) aux chemins de recherche de la bibliothèque.

0
joriki