J'ai utilisé des cosses de cacao pour installer la bibliothèque TesseractOCR
. L'application fonctionne correctement lors de l'exécution sur des appareils, y compris des appareils iOS12
. Le crash ne se produit que sur le simulateur iOS12. J'ai également installé iOS 11.4 Simulator
et cela fonctionne très bien avec celui-là. Je me gratte la tête depuis un moment. C'est le crash que je reçois.
dyld: lazy symbol binding failed: can't resolve symbol ___cxa_guard_acquire in /Users/IancuTudor/Library/Developer/CoreSimulator/Devices/ABE5EE31-47C8-4457-8F33-B4C265599147/data/Containers/Bundle/Application/40814EAD-8965-47F2-8036-3DE48A8143BF/Bookly.app/Frameworks/TesseractOCR.framework/TesseractOCR because dependent dylib #1 could not be loaded
dyld: can't resolve symbol ___cxa_guard_acquire in /Users/IancuTudor/Library/Developer/CoreSimulator/Devices/ABE5EE31-47C8-4457-8F33-B4C265599147/data/Containers/Bundle/Application/40814EAD-8965-47F2-8036-3DE48A8143BF/Bookly.app/Frameworks/TesseractOCR.framework/TesseractOCR because dependent dylib #1 could not be loaded
(lldb)
libstdc++ is removed in iOS 12 simulator but it remains in the iOS 12.0 (device) .
En guise de solution de contournement, vous pouvez donc copier la bibliothèque (libstdc ++. 6.0.9.tbd) de Xcode 9.4 à Xcode 10. Mais ce n’est pas une solution à long terme. Vous devez contacter le fournisseur de ces bibliothèques et demander les versions construites avec libc ++.
OU Vous pouvez ajouter la commande suivante à votre fichier pod si vous utilisez Cocoapods en tant que gestionnaire de dépendance:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'TesseractOCRiOS'
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
header_phase = target.build_phases().select do |phase|
phase.is_a? Xcodeproj::Project::PBXHeadersBuildPhase
end.first
duplicated_header_files = header_phase.files.select do |file|
file.display_name == 'config_auto.h'
end
duplicated_header_files.each do |file|
header_phase.remove_build_file file
end
end
end
fin
Je devais copier les fichiers dylib, pas les fichiers tdb pour que le simulateur fonctionne.
Prérequis: vous avez Xcode 9.4 installé avec exactement ce nom. Modifiez FROM
et même TO
ci-dessous si nécessaire.
Voici mes commandes de terminal pour la copie des fichiers Dylib:
FROM="Xcode 9.4"
TO="Xcode"
set -x; for f in /Applications/"$FROM".app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libstdc++*; do : Sudo cp -p "$f" "${f/$FROM/$TO}"; done; set +x
ATTENTION! Vous devriez être très prudent car il y a un Sudo
impliqué. ME FAIS-TU CONFIANCE?
Le script fera un essai si vous copiez ma commande tout de suite. Supprimez le :
devant Sudo
pour modifier réellement votre système de fichiers. set -x
permettra la journalisation de toutes les commandes exécutées.
Pas lié à la question, mais si vous utilisez CocoaPods, vous devrez probablement appliquer le correctif suivant: https://Gist.github.com/gali8/7d090865a904a16caf5a7a3116c3c3ab
En tant que solution plus propre, vous pouvez maintenant remplacer le cadre dans votre fichier pod en tant que:
pod 'TesseractOCRiOS', :git => 'git://github.com/parallaxe/Tesseract-OCR-iOS.git', :branch => 'macos-support'
Un support a été ajouté dans cette branche pour iOS 12. J'espère que cela aidera quelqu'un comme il m'a fait :)
J'utilise cette méthode, mais une erreur s'est produite dans le fichier podfile «pod 'TesseractOCRiOS',: git => 'git: //github.com/parallaxe/Tesseract-OCR-iOS.git',: branch = > 'macos-support' ”