错误LNK2020:Visual C ++中未解析的标记(06000002)

时间:2013-03-27 08:26:17

标签: c++ visual-c++ compiler-errors c++-cli

我在C ++ / CLI中创建了一个新的抽象类,并遇到了一个奇怪的错误。有很多类似的问题,但没有一个答案可以帮助我。

在这个新课程中,我收到以下错误:

error LNK2020: unresolved token (06000002) Foo::execute

这是h文件:

#pragma once
using namespace System::IO::Ports;
using namespace System;

public ref class Foo
{
protected:
    SerialPort^ port;
public:
    Foo(SerialPort^ sp);
    virtual array<Byte>^ execute();
};

这是cpp文件:

#include "StdAfx.h"
#include "Foo.h"

Foo::Foo(SerialPort^ sp)
{
    this->port = sp;
}

请注意,当我注释掉virtual array<Byte>^ execute();行时,所有内容都会完美编译。此外,当我删除virtual修饰符并在cpp文件中添加execute()的实现时,它也可以正常工作。

2 个答案:

答案 0 :(得分:6)

你自己已经给出了答案:

  

此外,当我删除虚拟修饰符并在cpp文件中添加execute()的实现时,它也能正常工作。

您在标头中声明了方法execute,但缺少实现方法。这正是链接器错误告诉你的。 在这种情况下,声明为virtual并不重要。

如果您想创建一个抽象类,您可以在线查找大量文章中的更多详细信息(例如Wikibooks: Abstract Classes

答案 1 :(得分:3)

您必须实现该方法或从标头中删除声明。 (在这种情况下,虚拟关键字无关紧要)

如果您有问题,请提出问题。