Visual C++で作成したEXEを、ランタイムDLL無しに単体で起動できるようにするには

More than 1 year has passed since last update.


Visual C++で作成したEXEが、他の環境だと動かない時

Visual C++ 2015等でWin32なEXEやDLLを作るとき、デフォルトでは作成したEXEやDLLは単体では動かず、CランタイムのDLLが必要になり、VC++インストールディレクトリのredistフォルダ内のファイルを同梱しないと他の環境では動かなくなります(vcruntime140.dllとかmsvcp140.dllとか)。

作成したプログラムを他の人へメールで渡すと「起動しない」と言われたりするのは、これが理由の場合が多いです。


解決策

Visual C++の場合、プロジェクトのプロパティから、C/C++のCode GenerationのRuntime Libraryを、Releaseビルドでは/MTにすることで、EXEにランタイムがスタティックリンクされます。

image.png

ちょっとしたデモ用だったり、Unityの中で呼び出されるDLLにする場合等には依存関係が面倒ですので、スタティックリンクしてしまう方が良い場合が有ります。

良かったら試してみてね。