链接器错误:未解决的外部符号问题

Linker Error : UnResolved External Symbol Issue

本文关键字:外部 符号 问题 未解决 错误 链接      更新时间:2023-10-16

可能的重复项:
对静态成员具有未定义的引用意味着什么?

目前我有以下代码文件: 测试类.h

class TestClass
{
private:
    int i;
    static TestClass* TClass;
public:
    static TestClass* GetClass()
    {
        if(TClass==NULL)
        {
            TClass = new TestClass();
            return TClass;
        }
        else
        {
            return TClass;
        }
    }//end method
    int Geti()
    {
        return i;
    }
    void Seti(int a)
    {
        i = a;
    }
};

现在我的 cpp 文件中有一个方法,将标题包含为

declspec(dllexport) int __stdcall GetVar()
{
    TestClass *TClass = TestClass::GetClass();
    return TClass->Geti();
}

我得到的错误是:

Error   8   error LNK2001: unresolved external symbol "private: static class TestClass * TestClass::TClass" (?TClass@TestClass@@0PEAV1@EA)  

YOu 声明但未定义您的静态成员

TestClass* TClass;

在.cpp文件中启动:

TestClass* TestClass::TClass=NULL;