libstdc ++は5年前に廃止されました。 Appleの最近のプラットフォーム(tvOSおよびwatchOS)はサポートしていません。
IOS 12.0シミュレータランタイムからサポートは削除されましたが、出荷アプリとのバイナリ互換性のためにiOS 12.0(デバイス)ランタイムに残ります。
CLANG_CXX_LIBRARYビルド設定(「C++標準ライブラリ」)をlibc ++に設定して、libstdc ++ではなくlibc ++を使用するようにプロジェクトを更新する必要があります。
Libstdc ++。tbdに依存する静的ライブラリがある場合は、Xcode 9.4のSDK(およびiOSシミュレーターランタイムのlibstdc ++。*。dylib)からファイルをコピーすることで回避できますが、それは長期的ではありません解決。これらのライブラリのプロバイダーに連絡し、libc ++を使用してビルドされたバージョンを要求する必要があります。
古いXcode(9.4)からコピーできます。動作するはずです。
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++
はiOS 12で削除されました。
TwitterのAppleエンジニアよりも良い情報源があればいいのですが、それだけです。
@ jeremyhuPSA:iOS 12.0 SDKからlibstdc ++がなくなりました(バイナリのランタイムに存在します互換性)。macOSでも同様に日数が付けられています。まだlibc ++に移行していない場合は移行してください。#WWDC2018 #cplusplus
編集:これはより良いソース、Xcode 10パッチノートです
Libstdc ++を使用したビルドは、Xcode 8で非推奨になり、iOSを対象とするXcode 10ではサポートされません。 C++プロジェクトはlibc ++に移行する必要があり、iOS 7以降の展開ターゲットを設定することをお勧めします。 C++標準ライブラリのビルド設定を変更する以外に、開発者はハードコードされたリンカーフラグとターゲットの依存関係を監査して、libstdc ++(-lstdc ++、-lstdc ++。6.0.9、libstdc ++。6.0.9.tbd、およびlibstdc ++。6.0を含む)への参照を削除する必要があります。 9.dylib)。 libstdc ++に対して構築された静的アーカイブなどのプロジェクトの依存関係も、libc ++に対して再構築する必要があります。 (40885260)
Xcode 10は、libが組み込まれたlibstdc ++ライブラリをキャンセルするため、手動でファイルをlibにコピーする必要があります。
ファイルをコピーします:(libstdc ++。6.0.9.tbd)and(libstdc ++。6.tbd)to:
/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
(「iPhoneOS」と「iPhoneSimulator」の区別に注意してください)
xcodeを削除して再構築します。
ここ はファイルです。
Xcode 10 Beta 2リリースノート から取得し、Xcodeのすべての将来のバージョンに適用可能:
Libstdc ++を使用したビルドは、Xcode 8で非推奨になり、iOSを対象とするXcode 10ではサポートされません。 C++プロジェクトはlibc ++に移行する必要があり、iOS 7以降の展開ターゲットを設定することをお勧めします。 C++標準ライブラリのビルド設定を変更する以外に、開発者はハードコードされたリンカーフラグとターゲットの依存関係を監査して、libstdc ++(-lstdc ++、-lstdc ++。6.0.9、libstdc ++。6.0.9.tbd、およびlibstdc ++。6.0を含む)への参照を削除する必要があります。 9.dylib)。 libstdc ++に対して構築された静的アーカイブなどのプロジェクトの依存関係も、libc ++に対して再構築する必要があります。 (40885260)
Appleがlibstdc ++を再びサポートすることはほとんどありません。
Xcode 10に更新した後、同じ問題に直面しました。libstdc++。6.0.9.tbdとlibstdc ++。6.tbdを https://github.com/Kila2/libstdcからダウンロードすることで、この問題を解決しました。 -.6.0.9.tbd 。
次に、これらのファイルをプロジェクトフォルダーにコピーしました。その後、次の手順に従って、リンクされたフレームワークとライブラリにこれらのライブラリを追加しました:プロジェクト>ターゲット>一般>リンクされたフレームワークとライブラリクリック(+)>「その他を追加」>「ファイルを開く」のプロジェクトフォルダーにナビゲートし、これらを選択しますライブラリと追加。
ここでプロジェクトを実行します。完全に実行されます。
AppleはXcode 10.0でlibstdc ++を削除するため、問題を解決したい場合は、ファイルを手動でlibにコピーしてみてください。
1 .iPhoneOS
およびiPhoneSimulator
ファイル
ファイルをコピーします:libstdc++.6.0.9.tbd
およびlibstdc++.6.tbd
およびlibstdc++.tbd
:
/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 .iOS.simruntime
ファイル
ファイルをコピーします:libstdc++.6.0.9.dylib
およびlibstdc++.6.dylib
およびlibstdc++.dylib
:
私にとって-l "stdc ++。6"はpod install
の間に追加されました
この問題を解決するには、Podfileでpost_installハンドラーを使用できます。
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
Jeremy Huddleston Sequoiaの答えは、この問題を解決する方向性を与えてくれました。ですから、先に進む前に、彼の答えを読んだことを確認してください。
プロジェクトのC++ライブラリを更新した後でも、Xcodeがこのlibstdc ++ libとプロジェクトをリンクできないリンクエラーが発生する場合があります。
解決策は、プロジェクト構造にlibstdc ++が含まれている場合、Xcodeがその参照を見つけることができなかったために赤くなった可能性があります。そのエントリをプロジェクト構造から削除し、代わりに新しいlib(libc ++)を追加したら、準備はいいです。
シミュレータの場合、libstdc ++。6.0.9.tbdをLinked Frameworks and Librariesから削除するだけです。
古いXcode(9.4)からコピーすると、物理iOSデバイスで機能します。 Did find: /usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator
のシミュレーターの問題。 Appleはシミュレータの互換性サポートを削除したようです。 iOS 11.4シミュレーターをダウンロードするだけで実行できます。
これは動作します。 .dylibファイルを/ usr/libからsimruntimeにコピーしないでください。
Xcode 9.4.1からXcode 10.2.1にコピーするファイルとパスのリスト
A)ファイルをコピーします:libstdc ++。6.0.9.tbdおよびlibstdc ++。6.tbdおよびlibstdc ++。tbd
from> Xcode9_41/Xcode9_41.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
から> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib
B)ファイルをコピーします:libstdc ++。6.0.9.dylibおよびlibstdc ++。6.dylibおよびlibstdc ++。dylib
from> Xcode9_41/Xcode9_41.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
>> /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
必要なファイルを9.4から10.1にプラットフォームライブラリとランタイムの両方をコピーすることで、ビルドの問題を修正できました。ただし、シミュレータで問題を解決するだけです。私のアプリは、物理デバイスで実行しているとき、起動(スプラッシュスクリーン)のままです。