web-dev-qa-db-ja.com

リンカーが静的ライブラリをエラーでリンクするのはなぜですか? iOS

混合言語フレームワークをプロジェクトにリンクする際に問題があります。

1)SwiftおよびObjective-Cクラスを使用してフレームワークを作成します。

2)メインロジックはSwiftファイルに保存されていました。たとえば、NSLog( "Swift log was called")を呼び出すメソッドを持つクラス。

3)Objective-Cファイルには、Swiftクラスのインスタンスを作成し、Swift-logメソッドを呼び出すメソッドを持つクラスがあります。

4)このフレームワークをObjective-Cプロジェクトにリンクします。このプロジェクトに必要なものはすべて呼び出すことができますが、このプロジェクトをビルドしようとするとエラーが発生します "linker command failed with exit code 1 (use -v to see invocation)

そして警告:

ld: warning: Could not find auto-linked library 'swiftFoundation'

ld: warning: Could not find auto-linked library 'swiftDarwin'

ld: warning: Could not find auto-linked library 'swiftCoreFoundation'

ld: warning: Could not find auto-linked library 'swiftCore'

ld: warning: Could not find auto-linked library 'swiftCoreGraphics'

ld: warning: Could not find auto-linked library 'swiftObjectiveC'

ld: warning: Could not find auto-linked library 'swiftDispatch'

ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'

空のSwiftファイルをインポートするソリューションも見ましたが、ゴミを出さずにプロジェクトを作成する必要がありました。

23

純粋なObjective-Cプロジェクトの場合、この$(TOOLCHAIN_DIR)/usr/lib/Swift/$(PLATFORM_NAME)をターゲットのライブラリ検索パスに追加する必要があるようです。 Swiftで書かれたライブラリをObjective-Cのプロジェクトに含めると、これがうまくいきました。

66
Nathan
  1. Xcodeでios/YourAppName.xcodeprojを開きます
  2. 左側のProject Navigatorでアプリ名を右クリックし、[新しいファイル…]をクリックします
  3. 単一の空のSwiftファイルをプロジェクトに作成します(追加するときに[アプリ名]ターゲットが選択されていることを確認してください)
  4. xcodeが要求したら、Create Bridging Headerを押し、Swiftファイルを削除しないでください。ビルドを再実行します。

これで問題が解決するはずです

27
Hussam Kurd

XCode 11ベータ4の場合ライブラリ検索パスは次のようになります。

$(TOOLCHAIN_DIR)/usr/lib/Swift-5.0/$(PLATFORM_NAME)
9

この回避策を試してください https://stackoverflow.com/a/50495316/1658268

基本的に、プロジェクトにダミーのSwiftファイルを追加して、ビルドを再実行します。

7
SudoPlz

私の場合、Swift Podsライブラリーを追加した後のReact-Nativeプロジェクトでした。たぶん、ステップ2だけで機能します:

  1. 新しいSwiftファイルとBrigdeヘッダーの追加:

1)File -> New -> File<code>File -> New -> File</code>

2)Swift Fileを選択します Select <code>Swift File</code>

3)Create Bridging Headerenter image description here

  1. Build Settingsに移動し、Always Embed Swift Standard LibrariesYESに設定します Always Embed Swift Standard Libraries
7
AlVelig

Xcodeの設定"コンポーネント"ツールチェーンで構成されたSwift 5.0スナップショットで誤ってプロジェクトをコンパイルしたときに同じエラーが発生しました。

2
Ralf Ebert

誰もこれを解決できましたか?私はSwift専用プロジェクトで作業しています。

以下のアプローチはどれもうまくいきませんでした:

  1. 空のファイルを追加しても機能しません(ブリッジングヘッダーの入力も求められません)

  2. Always Embed Swift Standard LibrariesYesに変更しても機能しませんでした

  3. $(TOOLCHAIN_DIR)/usr/lib/Swift/$(PLATFORM_NAME)または$(TOOLCHAIN_DIR)/usr/lib/Swift-5.0/$(PLATFORM_NAME)を追加しても機能しなかったなぜこれが起こっているのですか? Xcode 10.3とiOS 12.4.1を使用していますが、実際のiPhoneまたはiPadではなくシミュレーターで正常に動作します

追伸モデレーターが説明なしに私のメッセージを削除できなかったら本当に感謝しています。少なくとも削除するのではなく、少なくとも正しい方向に向けてください。

0
user12049320

Xcode 11 beta 4をcarthageと組み合わせて使用​​しているときにこのエラーが発生した場合は、次の回避策を参照してください。

https://github.com/Carthage/Carthage/issues/2825

基本的に、修正を含むxcconfigを作成し、これらを各ビルドに挿入することで構成されます。

0
snod