所以我遇到了问题:我删除了一些编码(结构)并将其粘贴到一个新的Header文件中。我在所需的任何地方都包含了新的Header文件,所以它不应该让我出错,但是在我尝试构建我的dll文件后,我收到了大量错误,说我剪切/粘贴的结构是重新定义。我点击了其中的一些"重新定义"和#34;原件"我同时得到同一个结构,这意味着只有一个结构,所以它不能重新定义。我此刻很困惑,我真的很感激一些帮助!在此先感谢:)
编辑: 我感动了这个:
struct Game_s
{
bool loaded;
bool FirstUser;
bool AlwaysVerfied;
bool DoingUnlockAll;
int Globaltimer;
int MaxUnlockAll;
time_t t;
};
Game_s Game;
从名为MW2Class.h的Header文件到另一个名为Structs.h的类,如下所示:
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <xbox.h>
struct Game_s
{
bool loaded;
bool FirstUser;
bool AlwaysVerfied;
bool DoingUnlockAll;
int Globaltimer;
int MaxUnlockAll;
time_t t;
};
Game_s Game;
答案 0 :(得分:2)
您的问题是您的头文件中声明了一个全局变量
Game_s Game;
是否要将Game
添加到包含标题的每个翻译单元中(包括警卫不要停止此操作)。当你到达链接阶段时,链接器将看到所有这些全局变量是相同的,并且不知道如何处理它们。
如果您真的想要全局变量,则需要使用extern
声明它并在一个翻译单元中定义它。有关详细信息,请参阅:Global variables in header file
答案 1 :(得分:0)
请务必将inclusion guard添加到标题中:
假设您的标头为test_file.hpp
,包含警卫将为:
#ifndef TESTFILE_HPP_
#define TESTFILE_HPP_
#endif
这可以防止标题的多次包含。
编辑:
1 - 在您的情况下
#ifndef STRUCTS_H_
#define STRUCTS_H_
#endif