C++ cpp中结构的未解析外部符号?

C++ cpp中结构的未解析外部符号?,c++,windows,visual-studio-2010,compiler-construction,linker,C++,Windows,Visual Studio 2010,Compiler Construction,Linker,我知道大多数时候,由于未包含库或未在类中正确定义函数,您会得到未解析的外部符号,但对于结构,我会得到相同的错误。 在我定义的一个.h中,我有几个文件.cpp和.h extern struct MyDataStruct StructData; 我在.cpp文件中包含了这个.h,但是 'struct MyDataStruct StructData' unresolved external symbol 我从任何类中定义这个结构,并且在没有任何类前缀的情况下访问它 提前感谢。您需要在一个且仅一个.

我知道大多数时候,由于未包含库或未在类中正确定义函数,您会得到未解析的外部符号,但对于结构,我会得到相同的错误。 在我定义的一个.h中,我有几个文件.cpp和.h

extern struct MyDataStruct StructData;
我在.cpp文件中包含了这个.h,但是

'struct MyDataStruct StructData' unresolved external symbol
我从任何类中定义这个结构,并且在没有任何类前缀的情况下访问它


提前感谢。

您需要在一个且仅一个.cpp文件中实际定义它,即在对象文件中为它分配一些空间,例如

struct MyDataStruct StructData;
注意:在这种情况下,没有外部变量


当所有其他代码通过保留extern的头中的声明访问它时,它告诉编译器和链接器,在可执行文件中的其他地方有一些东西需要解析引用。

您这样做,内存在一个地方,所有其他.cpp文件都可以访问它。基本上,需要分配结构因此,如果您在单个任意.cpp文件中声明它,任何其他.cpp文件都可以使用extern访问它。它是一个包含和不包含
extern
的声明。我想你的意思是“你需要真正定义它”。