29

だから私は Swift で iOS プロジェクトに取り組んでおり、いくつかの便利なものを含む静的ライブラリを作成したいと考えていました。

私の問題は、Xcode (バージョン 6.3) でライブラリをビルドしようとすると、「ビルドに失敗しました」というメッセージが表示されることです。/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker

私はこれを見たことがなく、私の最初の静的ライブラリではありません。そのため、Swift クラスのみを使用しているという事実に関連している可能性があると考えていました。

皆さんはどう思いますか ?前もって感謝します。

4

4 に答える 4

21

前述のように、AppleXcode 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れます)。

于 2017-11-16T20:41:02.257 に答える
16

Swift は静的ライブラリをサポートしていません

正しい方法はフレームワークを作成することですが、ここに回避策があります。

于 2015-04-16T14:36:35.507 に答える