Linker Tools Warning LNK4247

entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored

An entry point, specified with /ENTRY (Entry-Point Symbol), had a threading attribute, but /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) was also specified, with a different threading model.

The linker ignored the value specified with /CLRTHREADATTRIBUTE.

To resolve this warning:

  • Remove /CLRTHREADATTRIBUTE from your build.

  • Remove attribute from your source code file.

  • Remove both the attribute from source and /CLRTHREADATTRIBUTE from your build, and accept the default CLR threading model.

  • Change the value passed to /CLRTHREADATTRIBUTE, such that, it agrees with the attribute in source.

  • Change the attribute in source, such that, it agrees with the value passed to /CLRTHREADATTRIBUTE.

The following sample generates LNK4247

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