wake-up-neo.com

Xcode 10.0 GM - dyld: Lazy-Symbol-Bindung fehlgeschlagen: Symbol ___cxa_guard_acquire kann nicht aufgelöst werden Vorher hat es gut funktioniert

Ich habe Kakaopads verwendet, um die Bibliothek TesseractOCR zu installieren. Die App funktioniert gut, wenn sie auf Geräten ausgeführt wird, einschließlich iOS12-Geräten. Der Absturz tritt nur auf dem iOS12-Simulator auf. Ich habe auch das iOS 11.4 Simulator installiert und es funktioniert einwandfrei. Ich habe mir schon eine Weile den Kopf gekratzt. Das ist der Absturz, den ich bekomme. 

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) 
5
Iancu Tudor
libstdc++ is removed in iOS 12 simulator but it remains in the iOS 12.0 (device) .

Um dieses Problem zu umgehen, können Sie die Bibliothek (libstdc ++. 6.0.9.tbd) von Xcode 9.4 nach Xcode 10 kopieren. Dies ist jedoch keine langfristige Lösung. Sie sollten sich an den Anbieter dieser Bibliotheken wenden und mit libc ++ erstellte Versionen anfordern.

ODER Sie können der Pod-Datei den folgenden Befehl hinzufügen, wenn Sie Cocoapods als Abhängigkeitsmanager verwenden:

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

ende

3
Vineeth Joseph

Ich musste die dylib-Dateien kopieren, nicht die tdb-Dateien, um den Simulator zum Laufen zu bringen.

Voraussetzungen : Sie haben Xcode 9.4 mit genau diesem Namen installiert. Ändern Sie ggf. FROM und sogar TO.

Dies sind meine Terminalbefehle zum Kopieren der Dylib-Dateien:

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

WARNUNG! Sie sollten wirklich vorsichtig sein, da es sich um ein Sudo handelt. VERTRAUST DU MIR?

Das Skript führt einen Probelauf durch, wenn Sie meinen Befehl sofort kopieren. Entferne das : vor Sudo, um Ihr Dateisystem tatsächlich zu ändern. set -x aktiviert die Protokollierung aller ausgeführten Befehle.

Nicht im Zusammenhang mit der Frage, aber wenn Sie CocoaPods verwenden, müssen Sie wahrscheinlich auch irgendwann den folgenden Patch anwenden: https://Gist.github.com/gali8/7d090865a904a16caf5a7a3116c3c3ab

1
JKvr

Als sauberer Ansatz können Sie das Framework jetzt in der Pod-Datei ersetzen: 

pod 'TesseractOCRiOS', :git => 'git://github.com/parallaxe/Tesseract-OCR-iOS.git', :branch => 'macos-support'

In diesem Zweig wurde Unterstützung für iOS 12 hinzugefügt. Hoffe, das hilft jemand so, wie er es tat :)

0
Samir K

Ich verwende diese Methode, aber es wird ein Fehler in der Poddatei-Datei „pod 'TesseractOCRiOS',: git => 'git: //github.com/parallaxe/Tesseract-OCR-iOS.git':: verzweigt > "Macos-Unterstützung" ”

0
qizengkui