奇妙な動作を示す C++ GUI プロジェクトがあります。私のマシンでは、コードは問題なくコンパイルおよび実行されます。ただし、別のマシンでは、コードはコンパイルされますが、何らかの形で MTA で実行されます。明らかに、MTA を使用すると、GUI にあらゆる種類の実行時の問題が発生します。これが私のメインです:
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Application::Run(gcnew Form1());
return 0;
}
メインの最初の行にブレークポイントを配置してアパートメントの状態を確認できます。正しくビルド/実行されるマシンでは、予想どおり「STA」になります。ただし、問題のあるマシンでは「MTA」になります。アパートメント モードを STA に切り替えても効果はありません。
デバッグ/リリースディレクトリを削除して、コンパイルする前にプロジェクトをクリーンアップしようとしましたが、デバッガーを接続せずに実行しましたが、すべて役に立ちませんでした。どのマシンが動作し、どのマシンが動作しないかのパターンを特定できません。実行中のマシンで exe をコンパイルし、問題のあるマシンに実行すると、正しく実行されるため、ビルド環境の問題であると思われます。関連するすべてのマシンは、Visual Studio 2008 標準で Windows XP を実行しています。何か案は?