【问题标题】:unresolved external symbol for structures in cpp?cpp中结构的未解析外部符号?
【发布时间】:2012-07-18 22:45:10
【问题描述】:

我知道大多数时候你会因为不包含库或在类中没有正确定义函数而得到 UNRESOLVED EXTERNAL SYMBOL,但我在结构上遇到同样的错误。 在我定义的 .h 之一中,我几乎没有文件 .cpp 和 .h

extern struct MyDataStruct StructData;

我将这个 .h 包含在我的 .cpp 文件中,但我得到了

'struct MyDataStruct StructData' unresolved external symbol

我从任何类中定义了这个结构,并且我在没有任何类前缀的情况下访问它。

提前致谢。

【问题讨论】:

    标签: c++ windows visual-studio-2010 compiler-construction linker


    【解决方案1】:

    您需要在一个且只有一个的 .cpp 文件中实际定义它,即在目标文件中为其分配一些空间,例如

    struct MyDataStruct StructData;
    

    注意在这种情况下没有外部。

    虽然所有其他代码都通过保留 extern 的标头中的声明来访问它 - 这告诉编译器和链接器可执行文件中的其他地方有一些东西可以解析引用。

    【讨论】:

    • 你做的内存在一个地方,所有其他的.cpp文件都可以访问它
    • 基本上结构体需要分配到某个地方,所以如果你在一个任意的.cpp文件中声明它,任何其他.cpp文件都可以用extern访问它。
    • 这是一个有extern和没有extern的声明。我认为您的意思是“您需要实际定义它”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 2016-01-29
    • 2011-02-09
    相关资源
    最近更新 更多