C++ cpp中结构的未解析外部符号?
我知道大多数时候,由于未包含库或未在类中正确定义函数,您会得到未解析的外部符号,但对于结构,我会得到相同的错误。 在我定义的一个.h中,我有几个文件.cpp和.hC++ 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 我从任何类中定义这个结构,并且在没有任何类前缀的情况下访问它 提前感谢。您需要在一个且仅一个.
extern struct MyDataStruct StructData;
我在.cpp文件中包含了这个.h,但是
'struct MyDataStruct StructData' unresolved external symbol
我从任何类中定义这个结构,并且在没有任何类前缀的情况下访问它
提前感谢。您需要在一个且仅一个.cpp文件中实际定义它,即在对象文件中为它分配一些空间,例如
struct MyDataStruct StructData;
注意:在这种情况下,没有外部变量
当所有其他代码通过保留extern的头中的声明访问它时,它告诉编译器和链接器,在可执行文件中的其他地方有一些东西需要解析引用。您这样做,内存在一个地方,所有其他.cpp文件都可以访问它。基本上,需要分配结构因此,如果您在单个任意.cpp文件中声明它,任何其他.cpp文件都可以使用extern访问它。它是一个包含和不包含
extern
的声明。我想你的意思是“你需要真正定义它”。