web-dev-qa-db-ja.com

Swift Objective-Cプロジェクトで静的ライブラリを使用するとエラーが発生します

要件に合わせてSwift静的ライブラリを作成する必要があります。 SwiftおよびObj-cコードを使用するSwift静的ライブラリを作成しました。ブリッジファイルを介してObj-cファイルを含めました。エラーなしでSwift静的ライブラリをコンパイルし、libMySwift.aファイルを取得できます。 Xcode9.3とSwift4を使用してライブラリをコンパイルします。

LibMySwift.aをobj-cプロジェクトに含め、obj-c互換ヘッダーを含めて、プロジェクトの自分のlibにアクセスします。プロジェクトをコンパイルしようとすると、以下の警告と200を超えるエラーが表示されます。

Auto-Linking library not found for -lswiftSwiftOnoneSupport
Auto-Linking library not found for -lswiftCore
Auto-Linking library not found for -lswiftQuartzCore
Auto-Linking library not found for -lswiftCoreImage
Auto-Linking library not found for -lswiftCoreGraphics
Auto-Linking library not found for -lswiftObjectiveC
Auto-Linking library not found for -lswiftDispatch
Auto-Linking library not found for -lswiftMetal
Auto-Linking library not found for -lswiftFoundation
Auto-Linking library not found for -lswiftUIKit
Auto-Linking library not found for -lswiftDarwin
Auto-Linking library not found for -lswiftCoreFoundation

手順が欠落している場合や何か追加する必要がある場合はお知らせください。

15
Vishal Gabani

静的ライブラリとしてコンパイルされたポッドに最初のSwiftファイルを追加すると、デモプロジェクトで同じエラーが発生します。私にとって解決策は簡単でした。以前はObjective-Cのみにあったデモプロジェクトに空の_ ​​Swiftファイルを追加しました。これにより、すべてのリンカーエラーが解決されました。

52
Alex Roslyakov

アレックスの答えの更新:

私の場合、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
8
AlVelig

この回答 私のために働いた:ライブラリ検索パスに$(TOOLCHAIN_DIR)/usr/lib/Swift/$(PLATFORM_NAME)を追加します。

0
joriki