我正在研究我的引擎的核心,我在 Microsoft Visual c++ express 中遇到了严重的链接问题。
为简化起见,导致问题的是这两个头文件,每个头文件都有一个具有不同标识符的命名空间。这两个包含文件实际上是相互包含的。编译没有错误,但是在链接时,显示错误“X 已在 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
最终发生的事情是我收到一条错误消息,指出 x、y 和 z 变量已在创建的第一个 .obj 文件中定义。我假设因为变量来自不同的命名空间,所以它们不会发生冲突。我也有头文件保护,所以头文件似乎没有被多次包含。
无论如何,任何形式的帮助或建议将不胜感激。我已经坚持了大约 3 天:P。另外,如果我没有提供足够的信息,请告诉我,只是我当前的代码非常长。
干杯,乔伊