Visual Studio 2010 - C++ 致命错误 LNK1120: 1 个未解析的外部

Visual studio 2010 - C++ Fatal Error LNK1120: 1 unresolved externals

本文关键字:外部 2010 Studio C++ LNK1120 致命错误 Visual      更新时间:2023-10-16

考虑Interface类:

class Interface
{
public:
virtual ~Interface(){}
virtual void someMethod() = 0;
virtual void someMethod2(){}
};

其中someMethod是纯虚拟的,someMethod2是虚拟的 然后Derived两个派生类

class Derived : public Interface
{
public:
Derived(){ cout << "derived constructor";}
~Derived(){ cout << "derived destructor";}
virtual void someMethod() override { cout << "derived someMethod";}
virtual void someMethod2() { cout << "derived someMethod2";}
};

DerivedB

class DerivedB : public Interface
{
public:
DerivedB(){ cout << "derivedB constructor";}
~DerivedB(){ cout << "derivedB destructor";}
virtual void someMethod() override { cout << "derivedB someMethod";}
};

它只实现了纯虚拟方法。 在main中,我正在执行以下操作:

vector<Interface *> myVector(4);

for(int i = 0; i < 4; i++){
if(i%2 == 0){
myVector[i] = new Derived();
}else{
myVector[i] = new DerivedB();
}
}

当我尝试构建时,出现以下错误:

error LNK2019: unresolved external symbol "public: __thiscall DerivedB::DerivedB(void)" (??0DerivedB@@QAE@XZ) referenced in function _main
debugTest.exe : fatal error LNK1120: 1 unresolved externals

怎么了?

你还应该为你声明的派生类实现其他方法,即Derived::~Derived(void)Derived::someMethod(void)Derived::someMethod2(void)DerivedB::~DerivedB(void)DerivedB::someMethod(void)

请参阅这篇文章:定义和声明之间有什么区别?和什么是未定义的引用/未解析的外部符号错误,我该如何修复它?