链接器工具警告 LNK4247

入口点“decorated_function_name”已有线程属性;已忽略“attribute”

使用 /ENTRY(入口点符号)指定的入口点具有线程属性,但还指定了 /CLRTHREADATTRIBUTE(设置 CLR 线程属性),后者具有不同的线程模型。

链接器忽略了使用 /CLRTHREADATTRIBUTE 指定的值。

若要解决此警告,请执行以下操作:

  • 从生成中删除 /CLRTHREADATTRIBUTE。

  • 从源代码文件中删除属性。

  • 删除源中的属性和生成中的 /CLRTHREADATTRIBUTE,并接受默认的 CLR 线程模型。

  • 更改传递给 /CLRTHREADATTRIBUTE 的值,使其与源中的属性一致。

  • 更改源中的属性,使其与传递给 /CLRTHREADATTRIBUTE 的值一致。

下面的示例生成 LNK4247

// LNK4247.cpp
// compile with: /clr /c
// post-build command: link /CLRTHREADATTRIBUTE:STA LNK4247.obj /entry:functionTitle /SUBSYSTEM:Console
[System::MTAThreadAttribute]
void functionTitle (){}