問題タブ [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.

0 投票する
2 に答える
80 参照

c++11 - ヘッダーファイルに宣言を保持しながら、独自のコンパイル単位に定義を移動しますか?

私のプロジェクトの1つに、ヘッダーファイルに次のものがあります。

は次generic_type_testのように定義されています。

まったく同じヘッダー ファイル内。

コンパイルすると、multiple definitionリンカーエラーが大量に発生します(明らかに)

問題は、ヘッダー ファイルに宣言を保持しながら、定義を独自のコンパイル ユニット (「.cpp」ファイル) に移動するにはどうすればよいかということです。

ジャロッド42へ

あなたのアイデアを適用すると、結果が得られます。

線で;

また、最も簡単な修正はフォワード関数であることも知っていますが、この方法での関数ポインターの単純さが本当に気に入っています。

0 投票する
2 に答える
13892 参照

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 内

0 投票する
4 に答える
53646 参照

c++ - C++ での複数定義エラーと、この問題を解決するための解決策

私はC++が初めてです。C++ の複数定義エラーについて疑問があります。

プログラムに 3 つのファイルがあるとします。1 つのヘッダー ファイルと 2 つの .cpp ファイル。両方の .cpp ファイルにヘッダー ファイルを含めました。

  1. ヘッダー ファイルでクラスを宣言し、まったく同じ方法で各 .cpp ファイルでクラスを定義しました。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、クラス定義の 2 つのコピーがあり、コンパイラは 2 つの .o ファイルのリンケージ中にどちらを使用するかを認識していないためですか?

ヘッダー ファイルで使用し、そのうちの 1 つのファイルでのみクラスを定義することで、この問題を解決できexternますか?この方法を使用して問題を解決できる場合、.cpp (クラス定義を含む) を他の .cpp ファイルに含める必要がありますか? (クラス定義なし)?

  1. ヘッダー ファイルでクラスを宣言および定義しました。この場合は上記(1で述べた)と同じですか?

  2. ヘッダー ファイルでクラスを宣言し、各 .cpp ファイルでクラスを定義しましたが、定義 (関数本体) が異なります。このタイプの実装では、複数定義エラーが発生しますか? もしそうなら、関数本体が .cpp ファイルで異なるこの問題をどのように解決できますか?

0 投票する
4 に答える
3988 参照

c++ - C++ のヘッダー ファイル内のインライン関数

ヘッダファイルでクラスの関数を定義するのが悪い習慣なのはなぜですか?

ヘッダーファイルがあり、クラス定義自体でクラスの関数を次のように定義するとします。

ヘッダファイル.hpp

したがって、このようにクラスで関数を定義すると、関数は「インライン」になります。したがって、このヘッダー ファイルをたとえば 2 つの .cpp ファイルに含めると、「複数定義エラー」が発生しますか??のような関数を定義するのは悪い習慣ですか?これはクラス定義ですか?

0 投票する
1 に答える
49245 参照

c++ - ここで最初に定義された gcc の複数の定義

私はこれらのファイルを持っています

ここにファイル define.hpp があります

この define.hpp ファイルは、producer.hpp および consumer.hpp に含まれています。Producer.hpp および consumer.hpp ファイルは、それぞれ producer.cpp および consumer.cpp に含まれ、main.cpp にはまだ含まれていません。コンパイルするとエラーが発生します。

ここに私のメイクファイルがあります

この問題を解決するには?

0 投票する
2 に答える
2113 参照

c++ - .cpp ファイルをリンクしようとすると複数定義エラーが発生する (ヘッダー ファイルに .cpp がない)

私は基本的なプログラミングのクラスにいて、ファイルをリンクする方法を学んでいます。問題は、誰も修正できないようなエラーに遭遇したことです。私はすでに教授、学生アシスタント、キャンパス内のプログラミング支援ラボに行ったことがありますが、うまくいきません。

また、ここで複数の定義エラーに関連する少なくとも 10 の異なる投稿を検索しましたが、いずれの場合も次のいずれかです。

  1. .cpp ファイルまたは

  2. 関数定義はヘッダー ファイル内にあります。

ご覧のとおり、ここではどちらのケースも当てはまりません (コードを読みやすくするために、すべてのコメントを削除しました)。

ヘッダファイル: square.h:

関数定義ファイル: square.cpp

プログラム ファイル: test1.cpp

そして最後に、コンパイルしようとするたびにエラーが発生します:

参考までにコンパイルコマンドg++ test1.cpp square.cpp -o testfile

メイクファイルを使用しても違いはないようです。まったく同じコンパイルエラーを見つめるだけです。2 つの異なるメイクファイルを使用してみました。

メイクファイル 1

メイクファイル 2

今わかっているのは、これがある種のリンカ エラーであることだけですが、どうすればよいかわかりません。私が尋ねた人は皆、私のコードが正しいと言っています。しかし、明らかに何かが間違っています。

どんな助けでも大歓迎です。:D

0 投票する
2 に答える
6725 参照

c - Cを使用したEclipseの「ここで最初に定義された」エラー

Eclipse で libxml2 を使用して C プログラムをコンパイルしようとしています。私のコードには問題がないように見えますが、プロジェクトをビルドするとエラーが発生します。

エラー出力は次のスクリーンショットにあります: https://drive.google.com/file/d/0BwV-0_2diIaaQlZHM2Fwa2R0LWc/edit

このエラーの前に「Undefined reference to」エラーが発生していましたが、ライブラリ libxml2 をリンクするのを忘れていたためです。これが問題のスクリーンショットです。どうしようもない。

-nostartfiles[編集]リンカーフラグを入れるだけで問題を解決しました。

0 投票する
1 に答える
9474 参照

c - NetBeans で正常に動作する場合、手動の makefile を使用する場合のすべての関数の複数定義

メイクファイルについて学んでいるときに、私はこのエラーに出くわしました.私の教師は私に正しい方向を示すことができないようです. 関連するいくつかの質問を検索して読んでも、まだ答えが見えないようです。驚いたことに、NetBeans ではエラーが発生しません。

メイクファイル:

私が得たエラー:

このすべての関数は、どこにも含まれていないメイン ファイル「connect4.c」で一度だけ定義されます。何を試せばいいのかわかりませんが、訓練を受けた人には明らかかもしれないと思いました。私は多くの批判を受ける気がしますが、他の状況が私に当てはまるとは思いません.