私は大きなc++プロジェクトに取り組んでおり、他の人からコードを変更しています。この間に、参照VarA
が複数定義されていることを示すリンカーエラーが発生しました。対応する変数を見つけました。これは、プロジェクトに直接含まれているcppファイルで定義されていました。ソースファイルをヘッダーファイルとソースファイルに変換しようとしましたが、機能しません。
次に、変数宣言を、この変数のみを含む新しい個別のh / cppに移動しようとしました。これは、次のようになります。
hファイル(aaa.h)
#ifndef AAA_H
#define AAA_H
#include "classAdefinition.h"
extern ClassA VarA;
#endif
cppファイル(aaa.cpp)
#include "aaa.h"
ClassA VarA;
ここでメインファイルに含めるaaa.h
と、リンカーエラーにより、新しく作成されたものがエラーメッセージに追加さaaa.obj
れます(たとえば、VarA
そこでも定義されています)。これはまさに私が期待したものです。しかしVarA
、メインファイルのの定義を削除すると、定義されていないリンカーエラーが残り、VarA
非常に混乱します。
誰かがこの行動の原因が何であるかについての手がかりを持っていますか?
私はVS2008を使用しており、プロジェクトはで作成されていcmake
ます。これが問題を引き起こす可能性がありますか?たとえば、構成の問題がある可能性がありますか?テンプレートも頻繁に使用しますが、これが問題につながる可能性はありますか?