error LNK2020: unresolved token (06000002) in Visual C++
Solution 1
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 (e.g. Wikibooks: Abstract Classes)
Solution 2
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.
Lee White
Updated on June 22, 2022Comments
-
Lee White almost 2 years
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 thevirtual
modifier and add an implementation ofexecute()
in the cpp-file, it works as well.