Je télécharge le dernier Xcode chez Apple, mais j’ai constaté que je ne pouvais pas effectuer de recherche dans la bibliothèque intitulée "libstdc ++ 6.0.9" .
libstdc ++ était obsolète il y a 5 ans. Les plates-formes les plus récentes d’Apple (tvOS et watchOS) ne le prennent pas en charge.
La prise en charge a été supprimée du runtime du simulateur iOS 12.0, mais elle est restée dans le runtime iOS 12.0 (périphérique) pour assurer la compatibilité binaire avec les applications fournies.
Vous devez mettre à jour votre projet pour utiliser libc ++ plutôt que libstdc ++ en définissant le paramètre de construction CLANG_CXX_LIBRARY ("Bibliothèque standard C++") sur libc ++.
Si vous avez des bibliothèques statiques qui dépendent de libstdc ++. Tbd, vous pouvez contourner ce problème en copiant le fichier à partir du SDK dans Xcode 9.4 (et de libstdc ++. *. Dylib dans le simulateur iOS), mais ce n'est pas long. Solution. Vous devez contacter le fournisseur de ces bibliothèques et demander les versions construites avec libc ++.
Vous pouvez le copier depuis l'ancien Xcode (9.4). Ça devrait marcher.
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
libstdc++
est supprimé dans iOS 12.
J'aimerais avoir une meilleure source qu'un ingénieur Apple sur Twitter, mais c'est tout ce que j'ai.
@jeremyhuPSA: libstdc ++ est parti du SDK iOS 12.0 (il est présent dans le runtime pour la compatibilité binaire). Ses jours sont également numérotés sur macOS. Migrez vers libc ++ si vous ne l'avez pas déjà fait. # WWDC2018 #cplusplus
Edit: Voici une meilleure source, notes de patch Xcode 10
La construction avec libstdc ++ est déconseillée avec Xcode 8 et n'est pas prise en charge dans Xcode 10 lors du ciblage d'iOS. Les projets C++ doivent maintenant migrer vers libc ++ et il est recommandé de définir une cible de déploiement d'iOS 7 ou ultérieure. Outre la modification du paramètre de construction de la bibliothèque standard C++, les développeurs doivent également auditer les drapeaux de l'éditeur de liens et les dépendances cibles pour supprimer les références à libstdc ++ (y compris -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd et libstdc ++. 6.0. 9.dylib). Les dépendances de projet telles que les archives statiques construites avec libstdc ++ devront également être reconstruites avec libc ++. (40885260)
Extrait de Notes de publication de Xcode 10 Beta 2 et applicable à toutes les versions futures de Xcode:
La construction avec libstdc ++ est déconseillée avec Xcode 8 et n'est pas prise en charge dans Xcode 10 lorsque ciblant iOS. Les projets C++ doivent maintenant migrer vers libc ++ et il est recommandé de définir un fichier cible de déploiement d'iOS 7 ou version ultérieure. Outre le changement du paramètre de construction de la bibliothèque standard C++, les développeurs doivent auditer les drapeaux de l'éditeur de liens codés en dur et les dépendances cibles pour supprimer les références vers libstdc ++ (y compris -lstdc ++, -lstdc ++. 6.0.9, libstdc ++. 6.0.9.tbd et libstdc ++. 6.0.9.dylib) . Les dépendances de projet, telles que les archives statiques construites avec libstdc ++, devront également disposer de être reconstruit contre libc ++. (40885260)
Apple ne supportera probablement plus jamais libstdc ++.
Xcode 10 annule la bibliothèque libstdc ++ avec la bibliothèque intégrée Nous devons donc copier le fichier dans la bibliothèque à la main.
copiez le fichier: (libstdc ++. 6.0.9.tbd) et (libstdc ++. 6.tbd) dans:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
et
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
(Veuillez noter la distinction "iPhoneOS" et "iPhoneSimulator")
nettoyer xcode et le reconstruire.
Ici est le fichier.
J'ai rencontré le même problème après la mise à jour vers xcode 10. J'ai résolu ce problème en téléchargeant libstdc ++. 6.0.9.tbd et libstdc ++. 6.tbd à partir de https://github.com/Kila2/libstdc-. 6.0.9.tbd .
puis j'ai copié ces fichiers dans mon dossier de projet . Après cela, j'ai ajouté ces bibliothèques dans Frameworks and Libraries liés en procédant comme suit: Project> Target> General> Frameworks and Libraries, cliquez sur (+)> Cliquez sur "Ajouter Autre '> Accédez à votre dossier de projet dans' Ouvrir le fichier 'et sélectionnez ces bibliothèques, puis ajoutez-les.
Maintenant, lancez le projet, il fonctionnera parfaitement.
Pour moi, -l "stdc ++. 6" a été ajouté au pod install
Je l'ai trouvé dans "Pods/Target\Support\Fichiers/Pods-SomeTarget/Pods-SomeTarget.debug.xcconfig".
Pour résoudre le problème, vous pouvez utiliser le gestionnaire post_install dans Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "Pods-SomeTarget”
puts "Updating #{target.name} OTHER_LDFLAGS"
target.build_configurations.each do |config|
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
new_xcconfig = xcconfig.gsub('-l"stdc++.6" ', '')
File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
end
end
end
end
La réponse de Jeremy Huddleston Sequoia m'a donné la direction pour résoudre ce problème. Avant de poursuivre, assurez-vous d'avoir lu sa réponse.
Même après la mise à jour de la bibliothèque C++ dans votre projet, vous pouvez être confronté à une erreur de liaison lorsque Xcode ne peut pas lier votre projet à cette bibliothèque libstdc ++.
La solution est la suivante: si libstdc ++ est inclus dans la structure de votre projet, il est peut-être devenu rouge car Xcode n'a pas pu trouver la référence correspondante. Si vous supprimez cette entrée de la structure du projet et ajoutez la nouvelle bibliothèque à la place (libc ++), vous êtes prêt à partir.
Comme Apple supprime libstdc ++ dans Xcode 10.0, vous pouvez donc essayer de copier manuellement le fichier dans lib si vous souhaitez résoudre le problème.
1 fichier .iPhoneOS
et iPhoneSimulator
copier le fichier: libstdc++.6.0.9.tbd
et libstdc++.6.tbd
et libstdc++.tbd
dans:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
2 fichier .iOS.simruntime
copier le fichier: libstdc++.6.0.9.dylib
et libstdc++.6.dylib
et libstdc++.dylib
dans:
Pour simulateur, il suffit de retirer libstdc ++. 6.0.9.tbd duFrameworks and Libraries.
Copiez-le à partir de l'ancien Xcode (9.4) fonctionnera pour les périphériques iOS physiques . Pour les problèmes de simulateur avec Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
. On dirait que Apple a supprimé la compatibilité avec le simulateur. Il suffit de télécharger le simulateur iOS 11.4 et de l'exécuter.
J'ai pu résoudre le problème de construction en copiant les fichiers nécessaires de 9.4 à 10.1, à la fois les librairies de plate-forme et le moteur d'exécution. Mais cela ne résout que les cas avec simulateur. Mon application reste bloquée au démarrage (écran de démarrage) lors de l'exécution sur un périphérique physique.