Visual C++ 2015でコンパイルしたプログラムを試していたところ、Windows XPでプロセスが問答無用で死ぬ現象に見舞われました。いろいろ試してみた結果、およそ原因・回避方法が分かりましたので、ここに書き記します。 条件・症状 次の条件をすべて満たす場合に注意が必要です。 Visual C++ 2015でDLLをビルドする そのDLLはLoadLibraryなどで実行時に読み込まれる Windows XPで実行される このとき、次の新機能のいずれも使ってはなりません。死にます。 thread_local 関数内でのstatic変数 死ぬというのは、プロセスの強制終了のことです。 なお、関数内でのstatic変数のVC++ 2015の新機能とは、初期化処理が複数スレッド対応(コンパイラが適切に排他制御するコードを出力する)になるという、C++11仕様への対応です。参考: sta
![VC++ 2015で作ったDLLをWindows XPで動かすと最悪死ぬ - イグトランスの頭の中](https://cdn-ak-scissors.b.st-hatena.com/image/square/a11d3f640dd42c5387f7ae8ef1e4cf3dacdf306a/height=288;version=1;width=512/https%3A%2F%2Fdev.activebasic.com%2Fegtra%2Fwp-content%2Fuploads%2F2015%2F09%2Fprogram-died-in-windows-xp.png)