リンカー ツール エラー LNK2020

未解決のトークン 'token'

参照がメタデータ経由である点を除き、未定義の外部エラーに似ています。 メタデータには、すべての関数とデータが定義されている必要があります。

解決するには、以下を行います。

  • 不足している関数やデータを定義するか、

  • 不足している関数またはデータが既に定義されているオブジェクト ファイルまたはライブラリを追加します。

次の例では LNK2020 が生成されます。

// LNK2020.cpp
// compile with: /clr /LD
ref struct A {
   A(int x);   // LNK2020
   static int f();   // LNK2020
};

// OK
ref struct B {
   B(int x) {}
   static int f() { return 0; }
};

マネージド テンプレート型の変数を作成したにもかかわらず、その型をインスタンス化しなかった場合にも LNK2020 が発生します。

次の例では LNK2020 が生成されます。

// LNK2020_b.cpp
// compile with: /clr

template <typename T>
ref struct Base {
   virtual void f1() {};
};

template <typename T>
ref struct Base2 {
   virtual void f1() {};
};

int main() {
   Base<int>^ p;   // LNK2020
   Base2<int>^ p2 = gcnew Base2<int>();   // OK
};