Поделиться через


Предупреждение средств компоновщика LNK4247

Точка входа "decorated_function_name" уже имеет атрибут потока; "атрибут" игнорируется

Точка входа, указанная с параметром /ENTRY (Символ точки входа), имела атрибут потоковой связи, но был указан атрибут /CLRREADATTRIBUTE (Set CLR Thread Attribute) с другой моделью потоков.

Компоновщик проигнорировал значение, указанное в /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 (){}