web-dev-qa-db-ja.com

エラー「ライブラリが見つかりません」

自分のアプリに広告主を入れた後にエラーが発生しました。昨日、アプリは問題なく動作しましたが、今日はもう動作しませんでした..エラーは次のとおりです。

ld: library not found for -lGoogleAdMobAds
clang: error: linker command failed with exit code 1 (use -v to see invocation)

それを修正するには?ありがとう!

116
ViniciusPV

ライブラリの参照を削除して、再度参照を追加することもあります。

Google Mobile Ads SDKや他のライブラリを最初から追加する以外に、ライブラリ検索パスをチェックすることをお勧めします。ターゲットをコピーまたは複製するときに、Xcodeは「\」で二重引用符をエスケープする必要があると判断することがあります。

enter image description here

パスの前に複数の「\」を付けることで、エラーを再現することができました。

102
raurora

私は同様の「図書館が見つかりません」という問題を抱えていました。ただし、.xcodeprojファイルの代わりに.xcworkspaceファイルを誤って使用していたためです。

253
Casper

ターゲットを選択し、そのライブラリの"Build Phases" remove "Link Binary With Libraries"ファイルの".a"に移動します。きれいにして造ってください。

61
Abuzar Amin

次のようにエラーがCocoapodsに関連している場合:

library not found for -lPod-...

その他のリンカフラグを確認して、そこから削除する必要があります。

追加情報: cocoapodを使用する古いプロジェクトがある場合。そして最近、あなたは use_frameworks!をあなたのpodfileに追加する必要がありました。 cocoapodはあなたのOther Linker Flagsにライブラリを追加しなくなり、継承されます。したがって、use_frameworksを使用する前に、それらが追加された他のリンカフラグからそれらを手動で削除する必要があるかもしれません!

59
hasan

私の場合はXcode 7Xcode 9.1でも作業しました。

ld: library not found for -ldAfnetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Build Active architecture OnlyYesに設定します

enter image description here

52
Ted

エラーが以下のような場合

ld:-lpodsのライブラリが見つかりません

プロジェクトのFrameworkグループの中に、何らかの理由で( "不足しているファイル"のような)赤い "libPods.a"ファイルが作成されたことがわかりました。単にそのファイルを削除しただけで、すべてうまくいきました。

編集:他の解決策

私がすでに同じ質問で答えたもう一つの解決策はこのリンクにある

12
Teena nath Paul

これは、ワークスペースではなくプロジェクトファイルを開いた場合にも起こります。私は一日のように私はこのように無駄にしました。

9
kkodev

gotoビルドフェーズ - >ライブラリとバイナリをリンクし、ライブラリがプロジェクトフォルダで利用できないためエラーを示すライブラリを削除

9
Hitesh Agarwal

答えが遅れていますが、これが私が試したことのリストです。

  1. 有効なアーキテクチャー= armv7 armv7s
  2. アクティブアーキテクチャのみを構築= NO
  3. ターゲット - >ビルド設定 - >その他のリンカフラグ= $(継承)
  4. [ターゲット] - > [ビルド設定] - > [ライブラリ検索パス] = $(継承)
  5. 製品クリーン
  6. 端末でのポッド更新
4
reetu

これは、cocoapodを使用していて、デフォルトの.xcworkspaceファイルの代わりに.xcodeprojファイルを使用していない場合に起こります。

3
ehacinom

簡単な解決法私がこの問題を解決する方法は次のとおりです。

  1. ディレクトリplatforms/iosに移動します
  2. 次に、コマンドpod installを実行します。

それでおしまい。これで足りないライブラリがインストールされるはずです。

1
Manoj Shrestha

私の場合、命名の問題がありました。私のライブラリはios-admob-mm-adapter.aと呼ばれていました、しかしXcodeは名前が接頭辞libで始まるべきであると予想しました。私のライブラリの名前をlibios-admob-mm-adapter.aに変更して問題を解決しました。

私はCocoapodを使用しています、そしてそれは私のターゲットのビルド設定で他のリンカフラグオプションでライブラリをリンクします。フラグは-l"ios-admob-mm-adapter"のように見えます

それが他の誰かに役立つことを願っています

1
Accid Bright

私がこの問題を修正したのは次のとおりです。

  1. ディレクトリplatforms/iosに移動します
  2. 次に、コマンドpod installを実行します。

それでおしまい。

0
Manoj Shrestha

私のプロジェクトで 'pod update'を実行すると '-lSTPopupのライブラリが見つかりません'というエラーが表示され、問題が解決しました。

備考Trevor Panhorstの答え:

「ポッドファイルで明示的なバージョンを使用していない場合は、ポッドの更新に注意してください。」

0
Juan Santos

私にとっては、この問題は、IOS用の材料ライブラリをインストールしたために発生します。この問題を解決するために

1:ターゲットアプリのビルド設定に移動します。

2:他のリンカフラグを検索する

3:他のリンカフラグを開き、エラーに記載されているライブラリを確認します。

4:そのフラグを外します。

5:きれいにして造る。

これで問題が解決すると思います。

0
Fahad Qasim

私はこれが少し古いことを知っています、しかし私はちょうど同様の問題にぶつかり、 'pod update'を実行することは私のためにこれを直しました。私のライブラリのエラーはAFNetworkingにあった...

ポッドファイルで明示的なバージョンを使用していない場合は、ポッドの更新を慎重に行ってください。

0
Trevor Panhorst

単純に、GoogleAdMobAds.aはプロジェクトターゲットにありません。私にとってはlibAdIdAccessLibrary.aでした添付のスクリーンショットを確認してください

enter image description here

0
Ashvin Ajadiya

Static Linkerで表されるLibraryのコンパイル時エラーです

ld: library not found for -l<Library_name>

Library not found forへのライブラリパスを含めていない場合、エラーLibrary Search Pathsを取得できます。

この問題が発生しているのは、Static Linkerがライブラリの場所を見つけられないためです。リンクするXcodeのライブラリ検索パスに適切なディレクトリを追加して、Xcodeにそれらの場所を伝えます。

Build Settings -> Search Paths -> Library Search Paths 

ソースは here です

0
yoAlex5

@ rauroraの答えは私を正しい方向に向けていました。私は自分の "watchkitapp Extension/lib"パスにライブラリを含めていました。この場合、ライブラリ検索パスは「\」でエスケープする必要がありましたが、リンカはこれを理解していないようでした。この問題を解決するには、libパスを1つ上のレベルに移動して、名前にスペースが含まれるディレクトリに移動しないようにしました。

0
Justin Domnitz

ld: library not found for -{LIBRARY_NAME}の場合、ライブラリファイルが存在しないために起こりました。

アプリケーションターゲットの「ビルドフェーズ」の「ライブラリ検索パス」タブでライブラリパスを確認します。

ライブラリファイルのパスは実際のパスに一致している必要があります。たとえば、プロジェクトのルートにあるファイルが$(PROJECT_DIR)のようにパスを設定する必要がある場合

0
Reza Dehnavi

このエラーは非常に奇妙です。

-ldAfnetworkingでこのエラーが発生しました。プロジェクトを他のパスにコピーして作業しています。

0
A. Trejo

私は自分のビルド設定をReleaseからProductionにリネームしようとしましたが、どうやらココアポッドはそれを好まないのです。私はそれをReleaseに改名しました。

ポッドファイル 'pod update'を更新するだけで、普通に動作します。

0
Chandni