У меня есть проект C ++ GUI, демонстрирующий странное поведение. На моей машине код компилируется и работает просто отлично. Однако на другой машине код компилируется, но в конечном итоге запускается в MTA. Очевидно, что нахождение в MTA вызывает всевозможные проблемы во время выполнения для GUI. Вот мое главное:
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew Form1());
return 0;
}
Я могу поставить точку останова на первой строке main для проверки состояния квартиры, а на машинах, которые правильно строят / выполняют, это будет "STA", как и ожидалось. Однако на проблемных машинах это будет «МТА». Я могу даже попытаться переключить режим квартиры на STA, без эффекта.
Я попытался удалить каталоги debug / release и очистить проект перед компиляцией, запустить без подключенного отладчика, но все безрезультатно. Я не могу определить модель, с которой работают машины, а какие нет. Если я скомпилирую исполняемый файл на работающем компьютере и перенесу его на проблемный компьютер, он будет работать правильно, поэтому я подозреваю, что это как-то проблема среды сборки. Все задействованные машины работают под управлением Windows XP со стандартом Visual Studio 2008. Есть идеи?