我正在使用visual studio 2010并且相信我有一个项目设置问题。我有一个头文件,其中包含一些声明:
definitions.h
#include <string>
struct myStruct
{
std::string x[4];
std::string y[8];
};
void InitializeStructData();
extern myStruct data[12];
并且cpp文件初始化我的结构:
definitions.cpp
#include "definitions.h"
#include <string>
mySturct data[12];
void InitializeStructData()
{
data[0].x[0] = "a";
data[0].x[1] = "b";
....
data[0].y[0] = "a";
....
....
data[11].y[7] = "done initializing"';
}
我有一个表单,其中包含一些按钮和文本,我根据不同的情况从数组中填充文本:
myForm.cpp
#include "definitions.h"
...
//form initialization
一旦我有两个#include "definitions.h"
语句,我就会收到链接错误:
Error 1 error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * Definitions"
Error 2 error LNK1169: one or more multiply defined symbols found
答案 0 :(得分:4)
您的问题缺少重要部分。
标题中有std::string* Definitions
,您忘了使用extern
。
答案 1 :(得分:0)
你有你的代码(.h文件):
#ifndef DEFINITIONS_H
#define DEFINITIONS_H
#endif
如果你将它包含在多个地方,有助于防止你多次定义它?