简体   繁体   中英

error LNK2020: unresolved token (06000002) in Visual C++

I am creating a new abstract class in C++/CLI and have run into a strange error. There are many questions similar to this one but none of the answers could help me.

In this new class, I get the following error:

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

This is the h-file:

#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();
};

This is the cpp-file:

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

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

Note that when I comment out the virtual array<Byte>^ execute(); line, everything compiles perfectly. Also, when I remove the virtual modifier and add an implementation of execute() in the cpp-file, it works as well.

You already gave the answer yourself:

Also, when I remove the virtual modifier and add an implementation of execute() in the cpp-file, it works as well.

You declared the method execute in the header, but it's implementation is missing. That's exactly what the linker error is telling you. In this case the declaration as virtual does not matter.

If you want to create an abstract class, you can find further details in numerous articles online (eg Wikibooks: Abstract Classes )

You have to either implement the method or remove the declaration from the header. (virtual keyword doesn't matter in this case)

Please, ask a question, if you have any.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM