問題タブ [multiple-definition-error]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - ヘッダーファイルに宣言を保持しながら、独自のコンパイル単位に定義を移動しますか?
私のプロジェクトの1つに、ヘッダーファイルに次のものがあります。
は次generic_type_test
のように定義されています。
まったく同じヘッダー ファイル内。
コンパイルすると、multiple definition
リンカーエラーが大量に発生します(明らかに)
問題は、ヘッダー ファイルに宣言を保持しながら、定義を独自のコンパイル ユニット (「.cpp」ファイル) に移動するにはどうすればよいかということです。
ジャロッド42へ
あなたのアイデアを適用すると、結果が得られます。
線で;
また、最も簡単な修正はフォワード関数であることも知っていますが、この方法での関数ポインターの単純さが本当に気に入っています。
c++ - Linux での複数定義による C++ リンク エラー
コードをコンパイルしようとしていますが、複数の定義でリンク エラーが発生します。残念ながら、私はそれを修正することができません。助けていただければ幸いです。
次のファイルがあります。ヘッダー ファイル: CEST.h; CEST_UI.h; GlobalVariable.h;
ソース ファイル: CEST.cpp; CEST_UI.cpp; グローバル変数.cpp
複数の定義があると主張されているすべてのパラメーターは、「GlobalVariable.h」で定義され、「GlobalVariable.cpp」で初期化されます。
「GlobalVariable.h」を 2 回含めています。1 回目は CEST.cpp に、2 回目は CEST_UI.cpp に含めています。
「GlobalVariable.h」の次のガードは、複数の定義のリンクエラーから私を保護するだろうと考えていました:
「GlobalVariable.h」と「GlobalVariable.cpp」も添付しますので、ご覧ください。
「GlobalVariable.h」内</p>
GlobalVariable.cpp 内
c++ - C++ での複数定義エラーと、この問題を解決するための解決策
私はC++が初めてです。C++ の複数定義エラーについて疑問があります。
プログラムに 3 つのファイルがあるとします。1 つのヘッダー ファイルと 2 つの .cpp ファイル。両方の .cpp ファイルにヘッダー ファイルを含めました。
- ヘッダー ファイルでクラスを宣言し、まったく同じ方法で各 .cpp ファイルでクラスを定義しました。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、クラス定義の 2 つのコピーがあり、コンパイラは 2 つの .o ファイルのリンケージ中にどちらを使用するかを認識していないためですか?
ヘッダー ファイルで使用し、そのうちの 1 つのファイルでのみクラスを定義することで、この問題を解決できextern
ますか?この方法を使用して問題を解決できる場合、.cpp (クラス定義を含む) を他の .cpp ファイルに含める必要がありますか? (クラス定義なし)?
ヘッダー ファイルでクラスを宣言および定義しました。この場合は上記(1で述べた)と同じですか?
ヘッダー ファイルでクラスを宣言し、各 .cpp ファイルでクラスを定義しましたが、定義 (関数本体) が異なります。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、関数本体が .cpp ファイルで異なるこの問題をどのように解決できますか?
c++ - C++ のヘッダー ファイル内のインライン関数
ヘッダファイルでクラスの関数を定義するのが悪い習慣なのはなぜですか?
ヘッダーファイルがあり、クラス定義自体でクラスの関数を次のように定義するとします。
ヘッダファイル.hpp
したがって、このようにクラスで関数を定義すると、関数は「インライン」になります。したがって、このヘッダー ファイルをたとえば 2 つの .cpp ファイルに含めると、「複数定義エラー」が発生しますか??のような関数を定義するのは悪い習慣ですか?これはクラス定義ですか?
c++ - ここで最初に定義された gcc の複数の定義
私はこれらのファイルを持っています
ここにファイル define.hpp があります
この define.hpp ファイルは、producer.hpp および consumer.hpp に含まれています。Producer.hpp および consumer.hpp ファイルは、それぞれ producer.cpp および consumer.cpp に含まれ、main.cpp にはまだ含まれていません。コンパイルするとエラーが発生します。
ここに私のメイクファイルがあります
この問題を解決するには?
c++ - .cpp ファイルをリンクしようとすると複数定義エラーが発生する (ヘッダー ファイルに .cpp がない)
私は基本的なプログラミングのクラスにいて、ファイルをリンクする方法を学んでいます。問題は、誰も修正できないようなエラーに遭遇したことです。私はすでに教授、学生アシスタント、キャンパス内のプログラミング支援ラボに行ったことがありますが、うまくいきません。
また、ここで複数の定義エラーに関連する少なくとも 10 の異なる投稿を検索しましたが、いずれの場合も次のいずれかです。
.cpp ファイルまたは
関数定義はヘッダー ファイル内にあります。
ご覧のとおり、ここではどちらのケースも当てはまりません (コードを読みやすくするために、すべてのコメントを削除しました)。
ヘッダファイル: square.h:
関数定義ファイル: square.cpp
プログラム ファイル: test1.cpp
そして最後に、コンパイルしようとするたびにエラーが発生します:
参考までにコンパイルコマンドg++ test1.cpp square.cpp -o testfile
メイクファイルを使用しても違いはないようです。まったく同じコンパイルエラーを見つめるだけです。2 つの異なるメイクファイルを使用してみました。
メイクファイル 1
メイクファイル 2
今わかっているのは、これがある種のリンカ エラーであることだけですが、どうすればよいかわかりません。私が尋ねた人は皆、私のコードが正しいと言っています。しかし、明らかに何かが間違っています。
どんな助けでも大歓迎です。:D
c - Cを使用したEclipseの「ここで最初に定義された」エラー
Eclipse で libxml2 を使用して C プログラムをコンパイルしようとしています。私のコードには問題がないように見えますが、プロジェクトをビルドするとエラーが発生します。
エラー出力は次のスクリーンショットにあります: https://drive.google.com/file/d/0BwV-0_2diIaaQlZHM2Fwa2R0LWc/edit
このエラーの前に「Undefined reference to」エラーが発生していましたが、ライブラリ libxml2 をリンクするのを忘れていたためです。これが問題のスクリーンショットです。どうしようもない。
-nostartfiles
[編集]リンカーフラグを入れるだけで問題を解決しました。
c - NetBeans で正常に動作する場合、手動の makefile を使用する場合のすべての関数の複数定義
メイクファイルについて学んでいるときに、私はこのエラーに出くわしました.私の教師は私に正しい方向を示すことができないようです. 関連するいくつかの質問を検索して読んでも、まだ答えが見えないようです。驚いたことに、NetBeans ではエラーが発生しません。
メイクファイル:
私が得たエラー:
このすべての関数は、どこにも含まれていないメイン ファイル「connect4.c」で一度だけ定義されます。何を試せばいいのかわかりませんが、訓練を受けた人には明らかかもしれないと思いました。私は多くの批判を受ける気がしますが、他の状況が私に当てはまるとは思いません.