で2つのオブジェクトファイルをリンクしながら、基本的に私のPROBはこれです。構造human
の定義は、foo.hに含まれる別のヘッダーにあります。 foo.h
と他のヘッダーとcppを使用しない共有オブジェクトファイルgame.so
を作成しています。複数の定義エラー同じ定義
今、2つの異なるcppファイル - a.cpp
とb.cpp
があり、ヘッダーfoo.hが含まれています。 オブジェクトファイルa.o
と別にb.o
を別々に作成しています。 別の共有オブジェクトファイルtennis.so
を作成するためにオブジェクトファイルとgame.so
の両方をリンクしていますが、その間に「人」の複数の定義を取得しています。私はa.o
にperson
の構造体定義が含まれているので、多重定義エラーがあることを認識しています。b.o
もそうです。
私は既にをfoo.h
に使用しています。 a.o
は別々にコンパイルされ、b.o
は別々にコンパイルされています。 game.so
を作成しながら、私が何らかの依存関係に他のcppファイルにfoo.
時間内構造定義のそれぞれで独立し変更カントですので、私は、#pragmaがかつてと思ういけないかa.cpp
とb.cpp
両方がfoo.h
が含まれているためIFDEFはここに有用であろうtennis.so
の作成中に複数定義エラーを解決する方法はありますか?
構造体の多重定義リンクエラーなどはありません。状況を再現するための正確なコードとビルドコマンド、正確なコンパイラ出力を投稿してください。 –
ほとんど機密ではないので、正確なコードを投稿できませんでした。私にできることはほかにありますか? – Prz9
MCVE([MCVE])を作成することができます。それは問題を再現しますが、機密情報は含まれません。あなたのヘッダが変数を宣言していないようです。変数を定義します。したがって、ヘッダーを含む各ファイルには定義が含まれており、それらが一緒にリンクされることはありません。簡単な経験則:ヘッダーで宣言された変数はキーワード 'extern'で宣言する必要があります。 –