我有一个 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”,正如预期的那样。但是,在有问题的机器上,它将是“MTA”。我什至可以尝试将公寓模式切换到 STA,但没有效果。
我已经尝试在编译之前删除调试/发布目录并清理项目,在没有附加调试器的情况下运行,都无济于事。我无法确定哪些机器工作和哪些不工作的任何模式。如果我在工作机器上编译 exe 并将其带到有问题的机器上,它将正确执行,所以我怀疑这在某种程度上是构建环境问题。所涉及的所有机器都运行带有 Visual Studio 2008 标准的 Windows XP。有任何想法吗?