プロジェクトに次の行を追加した場合にのみ発生する、非常に奇妙なエラーメッセージが表示されます。
std::list<CRect> myVar;
std :: listである必要はなく、std::vectorまたは私が想定する他のSTLコンテナである可能性があることに注意してください。
エラーメッセージは次のとおりです。
エラー1エラーLNK2005: "public:__thiscall std :: list
:: list>(void) "(?? 0?$ list @ VCRect @@ V?$ allocator @ VCRect @@@ std @@@ std @@ QAE @ XZ)SomeLowLevelLibrary.libですでに定義されています
エラーメッセージで参照されている低レベルのライブラリは、私が構築しているプロジェクトについて何も知りません。コアの低レベルの機能しかなく、高レベルのMFCGUIを処理しません。
コード行を次のように変更すると、リンカーエラーが消える可能性があります。
std::list<CRect*> myVar;
しかし、私はそれのためにそれをハックしたくありません。
また、スタックとヒープのどちらに変数を作成しても、同じエラーが発生します。
誰かがこれについて何か考えを持っていますか?VistaEnterpriseでMicrosoftVisualStudio2008SP1を使用しています。
編集:上記のリンカーエラーはstd :: list <>コンストラクターの場合です。また、デストラクタ、_Nextnode、およびclear関数のエラーも発生します。
編集:プロジェクト内の他のファイルでは、std :: vectorはリンクしません。他のファイルでは、std::listである可能性があります。一部のコンテナが機能する理由と機能しない理由がわかりません。MFCリンケージは、両方のライブラリ間で静的です。低レベルのライブラリには、std::listから継承する1つのクラスがあります。
編集:低レベルライブラリにはCRectから継承するクラスはありませんが、STLを利用します。