私はcファイルをインクルードすると、他の関数への未定義の参照を取得し始めます。次に、関数を含むcファイルをインクルードする必要があります。これをどうやって回避するのですか?定義されていない参照は、私がインクルードするcファイルで参照されますが、実際にはそれらのファイルを含めていないので、私は未定義の参照を取得します。cファイルをインクルードすると未定義の参照につながる
答えて
一般に、「.c」ファイルではなく「.h」ファイルが含まれます。
.hファイルで宣言された関数を呼び出すと、完全なプログラムを得るために開始Cファイルをコンパイルするだけでは不十分です。また、宣言されたコードを関連付けるオブジェクトファイルをリンクする必要があります機能。これらはライブラリ内に存在する可能性があります。その場合、そのライブラリとリンクする必要があります。
あなたは一度にすべてのファイルをコンパイル(gcc *.c
)または別のオブジェクトファイルに各.c
ファイルをコンパイルして、実行可能ファイルにそれらすべてをリンクするのいずれかの必要があります。
gcc -c main.c -o main.o
gcc -c helper.c -o helper.o
gcc -c other.c -o other.o
gcc *.o -o main
そして、あなたがすべき各.c
ファイル内.h
ファイルのみが含まれます。
これを含めるとどういう意味ですか? #includeプリプロセッサディレクティブを使用してインクルードするか、プロジェクトに追加するときと同じようにインクルードします。
プログラム内で呼び出される関数(または一般的には、参照される外部シンボル)がそのプログラムに含まれていなければならない、または明示的または暗黙的にプログラムにリンクされています。
すべての参照が解決されるまで、必要なソースファイルを追加してください。
できない場合は、プログラムまたはビルドに何らかの問題がある可能性があります。プログラムが不完全(ソースファイルが見つからない)か、破損しているか(ソースファイルの一部が欠落している)、不適切なソースファイルをビルドに含めた場合(例えば、プログラムがUnix用にコンパイルされている場合に必要なソースファイル、 (つまり、間違ったプラットフォーム用のコードを条件付きでコンパイルしています)、プログラムが単にあなたのシステムに移植されていない(あなたが持っていないライブラリ関数への参照をしています)。
- 1. 別のディレクトリからファイルをインクルードするときの未定義の参照
- 2. 未定義の参照Cファイル
- 3. C++でヘッダーをインクルードしているときの未定義の参照
- 4. 未定義の参照(C)
- 5. C++リンク未定義参照
- 6. リンカーエラー:未定義参照C++
- 7. C++未定義参照コンストラクタ
- 8. C++マイヤーズシングルトン未定義参照
- 9. C++ヘッダーと未定義の参照
- 10. `yylex 'への未定義参照&&` yyin'への未定義参照
- 11. cファイルのアセンブリ要素の参照が未定義
- 12. 未定義のC++エラーへの参照
- 13. 未定義の参照のエラーメッセージ - C++
- 14. オブジェクトへのC++の未定義参照
- 15. 未定義の参照()Cで、のmath.h
- 16. C++: `sd_notify 'への未定義の参照
- 17. 未定義参照
- 18. 未定義参照
- 19. 未定義参照
- 20. C++コード::モールス符号に未定義の参照()とCode :: alphacodeに未定義の参照()
- 21. C:未定義の参照エラー
- 22. 未定義の参照エラーC++
- 23. Cプログラミングエラー:[未定義の参照: 'show_record']
- 24. C++テンプレート、未定義の参照
- 25. Cリンクエラー: 'main'への未定義参照
- 26. C++:関数への未定義参照
- 27. EclipseのC++未定義参照
- 28. C++ベクトル - 未定義の参照
- 29. C Makefileの未定義参照
- 30. 未定義の参照 - C++リンカエラー
あなたはCファイル、Hファイルのみを含めるべきではないことは知っていますか? – dasblinkenlight
egidraは#includingを言っていませんでした。おそらくそれはプロジェクトに含めることを意味します。 – Kaz
この文は意味をなさない:「定義されていない参照は、私がインクルードするcファイルで参照されますが、実際にそれらのファイルを含めていないので、定義されていない参照があります。あなたの文章では、代名詞 "それら"は先行する "私が含むファイル"を参照することしかできませんが、あなたは "私は実際にそれらのファイルを含んでいません"と主張します。 – Kaz