2017-01-18 4 views
0

私は通常、Objective-Cで多くの作業を行い、複数のクラスを表す複数のファイルがあります。Xcodeリンカの問題複数のファイルObjective-C

時々、プログラムの実行と、時々、私はこのエラーを取得する:

linker command failed with exit code 1 (use -v to see invocation)

このエラーの理由は何ですか?フォーラムで報告されたさまざまな解決策がありましたが、避けなければならない理由は何かを理解したいと思います。

+0

に宣言の最後に、この種の問題は、あまりにもボードである理由の原因をセミコロンを入れるのを忘れていました。そこを見てください:http://meta.stackoverflow.com/questions/338712/could-i-ask-about-possible-causes-for-an-issue – aircraft

答えて

0

プログラムをコンパイルする一般的な考え方は、各ファイルを個別にコンパイルし、コンパイルされたバイナリをリンクすることです。リンカコマンドが失敗したと言うと、バイナリのリンクに失敗したことを意味します。リンカのエラーは、エラーの内容によって異なります。通常、ジャンクの内部には、問題の内容を把握するのに役立つ便利な行がいくつかあります。関数が2回定義されたとき、関数が呼び出されてもどこにも宣言されていないとき、またはメイン関数(mainが2回定義されていることを意味する)を含むライブラリをインポートしたときなどです。

0

これには多くの理由が考えられます。私は経験したもののいくつかを挙げます。

  1. 誤って.mファイル内に.mファイルをインポートしました。
  2. リンクしたライブラリのクラス名が同じで、競合が発生します。
  3. リンクされたライブラリは、さまざまな設定(たとえば、ターゲットiOSバージョン、コード署名など)でビルドされています。
  4. リンクしたライブラリはシミュレータ用に作成され、実際のデバイスで使用しました。
  5. あなたがのLocalizable.strings