Предупреждение о конфликтах STA, MTA Важно? - PullRequest
1 голос
/ 27 января 2011

Я недавно начал писать оболочку C ++ / CLI для нативной библиотеки c ++. Теперь я получаю это предупреждение о компиляции

"предупреждение LNK4249: директива '/ CLRTHREADATTRIBUTE: STA' конфликтует с командной строкой; игнорируется"

Моя оболочка c ++ / cli настроена для MTA в аргументах командной строки компоновщика, но я не знаю, какой файл или проект пытается дать директиву STA.

Я достаточно читал, чтобы беспокоиться о том, что .NET заставляет библиотеки становиться многопоточными. Я читал, что это в основном влияет на использование COM моего приложения, но я не совсем уверен, использует ли моя DLL COM. Я использую сервисы взаимодействия для маршалинга строковых данных и использую msclr \ auto_gcroot.h, чтобы указать на управляемые классы из неуправляемых. В нативную библиотеку c ++, которая упаковывается, я включаю следующие заголовки:

#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxmt.h>
#include "Winsock2.h."
#include <time.h>

Есть ли у кого-нибудь совет, который поможет мне избежать болезненных переживаний в будущем, или мне просто не стоит об этом беспокоиться?

1 Ответ

0 голосов
/ 28 сентября 2011

Пока все хорошо.Я не видел никаких реальных проблем с этим;Я думаю, что это просто потому, что MFC является однопоточной библиотекой, поэтому она хочет компилировать таким образом.Так что для моего случая я думаю, что если я обработаю все объекты MFC и, например, не ориентированные на многопотоковое исполнение, я буду в порядке.

...