Предупреждение о конфликтах STA, MTA Важно?
Недавно я начал писать оболочку 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 ответ
Все идет нормально. Я не видел никаких реальных проблем с этим; Я думаю, что это просто потому, что MFC является однопоточной библиотекой, поэтому она хочет скомпилировать таким образом. Так что, для моего случая, я думаю, что до тех пор, пока я буду обрабатывать все объекты MFC и, например, не ориентированные на многопотоковое исполнение, все будет в порядке.