讨厌的链接错误

时间:2011-05-09 22:14:06

标签: c++ visual-studio-2010

我正在使用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

2 个答案:

答案 0 :(得分:4)

您的问题缺少重要部分。

标题中有std::string* Definitions,您忘了使用extern

答案 1 :(得分:0)

你有你的代码(.h文件):

#ifndef DEFINITIONS_H
#define DEFINITIONS_H

#endif
如果你将它包含在多个地方,

有助于防止你多次定义它?

相关问题