リンカコマンドは、終了コード1(呼び出しを表示するには-vを使用)、Xcode 8、Swift 3で失敗しました


114

私はこのエラーを取り除くことができません!

私は派生データをクリアするなどのあらゆる種類のことを試しました(環境設定->場所->灰色の矢印をクリックしてFinderで派生データフォルダを開きます->右クリックしてゴミ箱に移動)、プロジェクトをクリーンアップします(CMD + Shift + Kまたは製品-> Clean)、カルタゴと依存関係の更新、StackOverflowでの他の回答のチェック(主にビルド​​設定/フェーズでの調整)、およびgithubからのアプリの再クローンなど

同じプロジェクトが共同編集者のコンピュータで動作します。

編集:現在の最高評価の回答から、もう少しデバッグすることができました...しかし、まだ修正方法がわかりません。プロジェクトに何かを2回持っているようです。探してみましたが、何も2回表示されませんでした。

ログの写真は次のとおりです。



問題が解決しないのに、なぜ最高評価の回答を受け入れたのですか...?
benomatis

回答:


160

今日、xcode 8バージョン8.3.2で同じ問題に直面していました

問題を右クリック->ログに表示

ここに画像の説明を入力してください

次に、その問題の原因を確認できます

ここに画像の説明を入力してください


それをありがとう!ログに表示される内容は次のとおり
Jake Dobson

ようやく解決しました。あなたは私を正しい方向に導くのを助けました!Xcodeをクリックしてもログが表示されないのは本当にうんざりです...時間を節約できたはずです!
ジェイクドブソン2017年

ログ表示のヒントをありがとうございます。使用できるかどうかわかりませんでした
KarenAnne 2017年

1
@GhasemTabatabaei下記の私の答えを確認してください
ジェイク・ドブソン

81
なぜこれが受け入れられた答えなのですか?それは実際には質問に答えません、潜在的に解決への到達を助けるだけです。
トムオークリー2018

116

多分あなたはポッドファイルをインストールしましたが、.xcodeproj代わりにそのファイルからビルドしようとしています.xcworkspace


4
いいえ、そのためにカーセージを使用しました。これは、この同じエラーで他の人を助けることができる正当な答えです!
ジェイクドブソン2017

1
m $ AppCenterコードを既存のプロジェクトに追加したところ、ポッドが必要でした。何が起こっているのかわからず.xcodeproj、1年以上の間それを使っていました。
Dennis Smolek

1
私の修正はこれに多少関係していました。最近、いくつかの依存関係をアップグレードし、プロジェクトはCocoaPodsを使用しました。以前は、常にプロジェクトファイルから作業していました。プロジェクトとポッドの両方が含まれているワークスペースファイルを開いたところ、すべて問題なく動作しました。
Rozgonyi

40

私のために働いた唯一の事は実行するようにしたpod deintegratepod install


質問に答えました。以下の私のコメントが表示されている場合、そのファイルに既にインポートされているファイルをインポートしました。プロジェクトは、ファイルを2回参照しようとする競合状態にありました。
ジェイクドブソン

わかりました、それはjsutでうまくいきませんでした。グーグルで検索すると、これが思いついたので、IDを試して他の人を助けようと思ったのです。
Charles Harring 2017

それはすでにそこにあるので、私はそうは思いません。きっと誰かが役に立つと思うかもしれません。私が使用していたアプリはココアポッドを使用していませんでした。実は、このエラーは非常に一般的であり、それ自体に関する情報はほとんどありません。各プロジェクトに応じて、非常に多くのソリューションが見つかります。
ジェイクドブソン2017

それは私の日を救います!神のお恵みがありますように!
user2612604

19

きれいにしてみましたか?cmd + shift + k


8
ああ、たっぷり!
ジェイクドブソン2017

それが文字通り私が得るすべてです...テキストをクリックしても、ほとんどのエラーの場合のように、追加情報やそれが発生したファイルの場所に移動しません。コンソールでは何も、それは今まで...このエラーのためのアプリを実行するには取得しません
ジェイク・ドブソン

FWIW、私は最近、SDKでビルドするときにこの問題に遭遇し、@ FranciscoPerezの提案がうまくいきました。デバッグに深く入り込む前の最初のステップとして、この方法をお勧めします。
リアストラッド

9

さて...ここに私の問題を解決したものがあります...

アプリデリゲートファイル内:

#import "AppDelegate.h"
#import "DarkSkyAPI.h"
//#import "Credentials.h"

プロジェクトのDarkSkyAPI.mファイルに既にCredentials.hをインポートしています。余分なインポートをコメントアウトすると、エラーは解消されました!

言及すべきことがいくつかあり、将来的には誰かを助けるかもしれません。@ umairqureshi_6の答えはプロセスに沿って私を助けましたが、解決しませんでした。彼は私が情報を掘り出すことができる場所に導いた。AppDelegateファイルとDarkSkyAPIファイルがエラーログに表示され続け、Credentialsファイルから取得した情報がエラーの原因でした。.hは.mファイルからのすべてのインポートを運ぶと聞いたので、これらの3つのファイルのいずれかにある必要があることを知っていたので、すぐにインポートを確認しました。ブーム!


6

質問はすでに回答済みです。しかし、これが誰かが時間を節約するのに役立つ場合:私は同じエラーがありました。私はすべてをチェックして、私の側からの非常に小さな愚かな間違いを見つけました。コアデータのManagedObjectカスタムファイルをプロジェクトのビューコントローラーにインポートしました。プロパティクラスの.mファイルがコアデータクラスの.hファイルをインポートし、重複したインポートを引き起こしたため、誤って.hファイルの代わりに .mファイルをインポートしました。

したがって、複数のソリューションを試す前に、正しいファイルをインポートしたかどうかを確認してください。


はい!これは私の問題とよく似ていました。プロジェクトで同じファイルを2回インポートしました。むしろ、「fileA.h」を「fileB.h」にインポートしましたが、「fileA.h」と「fileB.h」を「fileC.h」またはそれらの行に沿ったものにインポートしたので、アプリがクラッシュします。どちらを使用するかわからないためです。他の人がファイルのインポートを再確認するためのリマインダーがあるのは間違いなく良い場所です!
ジェイクドブソン

6

多くの解決策が上で述べられています。誰も私のために働いていません(しかし、最初に上記を試してください)。

[プロジェクト]-> [ターゲットの選択]-> [リンクフレームワークとライブラリ]-> [すべてのポッドライブラリを追加]を選択します。(埋め込みバイナリに存在する場合は削除してください)

次に、これらをxcodeの左側のファイルエクスプローラーのFrameworkフォルダーから削除します。

これで私の問題は解決しました。


4

プロジェクト->ビルドフェーズ->ライブラリとバイナリをリンクを選択し、すべてのポッドライブラリを追加します。


3

依存関係にCarthageを使用すると、同じ問題が発生しました。

[プロジェクトの選択]-> [ビルド設定]-> [有効なビットコードを検索]-> [はい]が選択されている場合は、[いいえ]を選択します。

これでこの問題は解決しました。


2

同じ問題がありました。

原因は、2つのファイルで同じグローバル変数を宣言したことです。そのため、2つの重複するシンボルについて同じエラーが表示されていました。

解決策は、これらの変数を削除することでした。


1
なぜ1つだけではなく両方を削除したのですか?
Jake Dobson

2

Flurryフレームワークでこの問題が発生している人。これが私の問題を修正したものです。私にとっての問題は、次のファイルをインポートしたが使用しなかったことです。「libFlurryTVOS_9.2.3」「libFlurryWatch_9.2.3」

だから私がしなければならなかったのは、プロジェクトのターゲット設定に行き、これらの2つのファイルを「リンクされたフレームワークとライブラリ」セクションから削除することだけで、問題は解決しました。


2

私の場合、エラーの原因は2回リンクされたライブラリです。

私はreact-nativeそれを使用して自動的にリンクされreact-native link、手動でxcode にリンクされました。


2

Find Implicit Dependenciesチェックボックスがオンになっていることを確認します。

(製品->スキーム->スキームの編集->ビルド->暗黙的な依存関係の検索)


2

CocoaPodsでSparkleフレームワークをテストしていました。

悲しいことpod 'Sparkle', '~> 1.21'に、PodFileを間違った場所に配置しました。私はそれをテストの下に置きました(単体テストの場合)。

PodFileの正しい場所に配置されると、すべて正常です。


1

私はしなければならなかったimport Foundation

私はSwiftサーバー側にKituraを使用していて、これを忘れていました!


ハ。ええ、何かをする前に、少なくともFoundationをインポートする必要があります。ほとんどの場合、UIKitの機能を使用する必要があり、UIKitはFoundationからすべてを継承するため、通常はFoundationの代わりにUIKitをインポートします。Objcを使用したインポートはかなりトリッキーになる可能性がありますが、Swiftを使用していたように見えますか?
Jake Dobson、2017年

はい、私はSwiftを使用していました。手元のファイルにはコンパイラの問題はありませんでしたが、ファイルの実行中にのみ、この問題が発生しました!
ハニー

1
ええ、それは実行時まで実際にそれをチェックするとは思わない、私は間違っている可能性があります。しかし、Foundationから何かにアクセスしようとし、インポートを見つけることができず、プロセスを続行できなくなるまで、問題は発生しないようです-クラッシュ!
Jake Dobson

1

これが私の問題と解決策です:

ソースツリー(バージョンコントローラー)を使用してソースコードから2つのファイルを削除しました。削除した2つのクラスを含むdiffを適用した後、Xcodeはそれを自動的に追加しませんでした。そのため、リンカエラーが発生しました。

グループ名を右クリックして「ファイルを追加」を選択することにより、手動でファイルを追加しました。これでエラーが解決しました。

クラスファイルに関するリンカーエラーが発生した場合は、手動で追加してみてください。


1
彼らが指摘しようとしているファイルの問題のようです...他の場所にあるファイルが相互に情報を取得していないのは、このページでよく見られるようです。お返事をありがとうございます。それが将来の誰かを助けることを願っています!
ジェイクドブソン

1

自分のデバイスでビルドして実行した場合、この問題はありませんでした。シミュレータでのみこの問題がありました。コンピューターを再起動して実行しました。出来た。


1

私の場合、Target名前を変更したPodfileので、同じエラーが作成されます。

解決

をクリックしproject-> Build Phase->Link Binary with librariesて古いFrameWorksものを削除し、minus button(-)クリーンアップしてもう一度実行します。私の仕事です。

ここに画像の説明を入力してください

不要なを削除し.frameworkます。


1

他の答えは私にとってはうまくいかなかったので、他の誰かを助けるかもしれない場合に備えてここで私の解決策を共有します:

私の問題は、間違ったプラットフォーム用にXCode-ProjectのPodfileを構成していたことでした。私のPodfileの最初にある "platform:ios"を "platform:macos"に変更すると、エラーを取り除くことができました。


0

私も同じ問題を抱えていました。githubプロジェクトをチェックアウトする場合は、git cloneを使用する代わりに、git lfs cloneを使用します。大きなファイルが、gitだけを使用して適切に複製されない場合があるためです。また、ビットコードが無効になっていることを確認してください。


良いメモですが、通常、コンソールでは、一部のファイルが大きすぎて転送できないことが通知されます。
ジェイクドブソン

0

私にとって、gemロックファイルは、インストールしたものよりも古いバージョンのcocoapodsを指定していました。bundle exec pod install代わりに再分岐して実行する必要がありましたpod install


0

問題は私たちのほとんどにとって異なるようであり、エラーメッセージにはまともな情報があります。私の場合、Deployment Targetはライン10.13によって設定されましたexport MACOSX_DEPLOYMENT_TARGET=10.13が、実行していました10.14。その10.14ため、ITLibrary関連のシンボルを再び利用できるようにするために、[配置]を[全般]> [配置情報]に切り替える必要がありました。

cd /Users/foo/src/scrobble/macos/itunes-scrobble
    export MACOSX_DEPLOYMENT_TARGET=10.13

... SNIP ...

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ITLibMediaItem", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibPlaylist", referenced from:
      objc-class-ref in AppDelegate.o
  "_OBJC_CLASS_$_ITLibrary", referenced from:
      objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

0

私の場合、同じプロジェクトから複数の製品を製造していました。製品の1 main.mつでは、ファイルは同じプロジェクトの別のフォルダーからヘッダーファイルをインポートしました。しかし、そのファイルは「ビルドフェーズ」の「コンパイル済みソース」に含まれていませんでした。これにより、リンカエラーが発生しました。

正常にビルドできる製品の「ビルドフェーズ」設定を注意深く比較した後.m、ヘッダーのファイルを「コンパイル済みソース」のリストに含める必要があることに気付きました。そのファイルを追加した後、私の問題は解決しました。わかりやすくするために画像を添付します。強調表示されたファイルを追加する必要がありました。

ここに画像の説明を入力してください


-1

Ionic 1プロジェクトのビルド中に同じ問題が発生しました。

CDVLogger.hおよびCDVLogger.mファイルを削除した後、問題を解決できました


そもそもこれらのファイルは必要なかったようですが?これらのファイルや他のファイルも要求していて、プロジェクトを混乱させ、実行を妨げているに違いありません。
Jake Dobson、

-4

わかりました。今日も同じ問題があり、このスレッドに出くわしたときにグーグルを開始しました。答えが頭に浮かんだので、質問を読み終えていません。空のコンストラクターでクラスを宣言しました

class MyClass{
    MyClass();

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

次に、なぜ中括弧({})を使用してクラスのコンストラクターを終了しないのか(ここでの単語選択で正しいかどうかはわかりませんが、誰が気にするのか)と思いました。だから私はしました:

class MyClass{
    MyClass(){}

    void func_one(){
    // code
    }

    void func_two(){
    // code
    }

    ~MyClass(){
        cout << "Deleting object" << endl;
     }
};

問題が解消され、私のコードは完全に機能し始めました。

問題を調査して実際の原因を見つけることは良い習慣ですが、これでうまくいきました。


これはこのスレッドに役立つとは思いません...別のファイルに同じものをインポートするなど、エラーがファイルの問題を取得しようとしているようです。これはObjective-C固有のエラーなので、このエラーが発生するのは奇妙だと思います...
Jake Dobson

C ++でもこのエラーが発生しました。あなたの場合のリンカーエラーはおそらく、リンカーがコンストラクターのコードを見つけられなかったことです。名前を変更した関数で同様のエラーが発生しましたが、Xcode 10はそれ自体ではリンカーログを開けず、右クリックして「ログに表示」できることを知らなかったため、いくつか困惑しましたエラーの特定を試みる分。
Matt Parkins、2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.