前述のように、AppleはXcode 9 Beta 4 の時点で静的ライブラリで Swift を許可しています。
Objective-C ベースのターゲットと「子」スタティック ライブラリ プロジェクトを含む既存のプロジェクトでこれを実行しようとしましたが、リンク エラーが発生し続けました。
ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64
また
ld: library not found for -lswiftDispatch for architecture x86_64
これは、メイン ターゲット (アプリ) が Objective-C に対してのみビルドしようとしており、Swift ライブラリを含める必要があることを静的ライブラリから通知されていないためです。これは、アプリ ターゲットのCompile Sources
セクションにSwift ファイルがなかったことが原因でした。Build Phases
したがって、基本的には、少なくとも 1 つの.swift
ファイルをそのコンパイル リストに追加するだけで、Swift ライブラリが含まれます。コードや値を含める必要さえありません。空のファイルにすることができます。
次に、Swift ファイルを「子」スタティック ライブラリ プロジェクトに追加することができます。最初にブリッジヘッダーを生成させてから、それを移動してインポートするものを変更できます(プロジェクトを移動する場合は、ビルド設定でプロジェクトが正しいファイルを指していることを確認してください)。
同じ静的ライブラリ内で Swift と Objective-C を使用すると、独自の問題が発生する可能性があることに注意してください。Objective -C をSwiftにインポートする方法 (ブリッジング ヘッダーを使用) と、Objective-C コードで Swift ファイルを使用する方法 (ライブラリ用に生成さ-Swift.h
れます)。