链接器工具错误 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
};