エンジンのコアに取り組んでいますが、Microsoft Visual C++ Express で重大なリンクの問題が発生しています。
簡単に言うと、問題の原因はこれら 2 つのヘッダー ファイルであり、各ヘッダー ファイルには異なる識別子を持つ名前空間があります。これらの両方のインクルード ファイルは、実際には相互にインクルードします。コンパイルではエラーは発生しませんが、リンクすると、「X already defined in A.obj」というエラーが表示されます。以下に例を示します。
ヘッダー 1
#ifndef HEADER1_H
#define HEADER1_H
#include "header2.h"
namespace Core{
int x, y, z;
}
#endif
ヘッダー 2
#ifndef HEADER2_H
#define HEADER2_H
#include "header1.h"
namespace GUI{
int x, y, z;
}
#endif
結局、作成された最初の .obj ファイルで x、y、および z 変数が既に定義されているというエラーが表示されます。変数は異なる名前空間からのものであるため、衝突できないと思いました。ヘッダーガードも持っているので、ヘッダーファイルが複数回含まれているようには見えません。
とにかく、どんな種類の助けやアドバイスも大歓迎です。私はこれで約3日間立ち往生しています:P. また、十分な情報を提供していない場合はお知らせください。現在のコードが非常に長いというだけです。
乾杯、ジョーイ