视觉错误LNK2001:未解析的外部符号C++

visual error LNK2001: unresolved external symbol C++

本文关键字:外部 符号 C++ 错误 LNK2001 视觉      更新时间:2023-10-16

在我之前编译良好的VC++代码中,我添加了一个函数X(),如下所示:

In the file BaseCollection.h
class Base
{
// code
virtual HRESULT X();
//code
};

IN the file DerivedCollection.h
class Derived:public Base
{
    HRESULT X();
}
In the file DerivedCollection.cpp
HRESULT Derived::X
{
// definition of Derived here. 
}

已将头文件正确包含在.cpp文件中。但我仍然不明白我收到链接错误的原因是什么:

错误 LNK2001:未解析的外部符号"公共:虚拟长整型 __thiscall 基数::X()" (?X@Base@@UAEJI@Z)

我真的很努力修复这个错误。任何人都可以帮助我解决这个问题。提前非常感谢。

您是否在Base中实现了X()?你需要这样做,或者让它成为纯粹的虚拟:

class Base
{
// code
virtual HRESULT X() = 0; //pure virtual. Base doesn't need to implement it.
//code
};

此外,您在Derived中对X()的定义看起来是错误的。您可能需要这样的东西:

HRESULT Derived::X()
{
// definition of Derived here. 
}

你永远不会定义函数X

HRESULT Base::X()
{
// definition of X 
}

您还需要Derived::X()的定义,因为这也是virtual