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

在这个新类(class)中,我收到以下错误:

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() 的实现时,它也能正常工作。

最佳答案

你自己已经给出了答案:



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

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

关于c++ - 错误 LNK2020 : unresolved token (06000002) in Visual C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15654450/

10-12 00:13
查看更多