Visual C++ 2015 アプリケーションでの CRT ローカル配置について
こんにちは。Visual Studio サポート チームです。
8 月 2 日に Windows 10 の大型アップデートである Anniversary Update がリリースされ、本格的に Windows 10 の導入を進められている企業様も多いかと思います。
今回は、Windows 10 にも関係する Visual C++ 2015 のランタイムの変更点についてご紹介します。
ユニバーサル C ランタイム ライブラリについて
Visual C++ 2015 では C ランタイム (CRT) ライブラリが大きくリファクタリングされ、Universal CRT (UCRT) とそれ以外のランタイム (vcruntime140.dll など) の 2 種類で構成されています。
UCRT には広く利用される標準的な C ランタイム ライブラリのコードが実装されており、安定した API を備えているため Visual Studio のリリースごとにバージョン変更する必要のない、Windows OS のコンポーネントの一部として位置づけられるものになりました。
UCRT は Windows 10 には既定でインストールされていますが、以前の OS に対しては、Visual C++ 2015 再頒布可能パッケージを使用してインストールすることが可能です。
UCRT については、以下の弊社開発チームのブログ記事もご参照ください。
Introducing the Universal CRT
https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/
アプリケーションの開発時や配布時に、上記の変更について意識する必要はほとんどありませんが、CRT の配布方法として "ローカル配置" を検討されている場合には、UCRT のローカル配置に関してご注意いただく必要があります。
Visual C++ 2015 での CRT ローカル配置について
アプリケーションの実行に必要な C ランタイム ライブラリを実行環境に配布する方法としては、再頒布可能パッケージ等を使用してシステム フォルダーにランタイムをインストールする方法が一般的であり、このようにシステム フォルダーにランタイムをインストールすることを "集中配置" と呼んでいます。
これに対し、システム要件などにより集中配置を採用することが難しい場合は、アプリケーションの配布先フォルダーにランタイムを配置することも可能であり、このような配置方法は "ローカル配置" と呼ばれます。
集中配置やローカル配置の詳細については以下のドキュメントをご参照ください。
配置方法の選択
https://msdn.microsoft.com/ja-jp/library/ms235316.aspx
このローカル配置を行う際、Windows 10 より前の OS では、前述の UCRT も実行環境に配置する必要がある点にご留意ください。具体的には、Visual Studio 2015 をインストールした環境で、以下のフォルダーにある DLL を全て、exe と同じフォルダーへ配置する必要があります。
<UCRT 配布元フォルダー : 64 bit OS に Visual Studio 2015 をインストールしている場合>
(64 bit アプリケーション用) C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64
(32 bit アプリケーション用) C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86
なお、UCRT 以外の CRT は、従来どおり、redist フォルダー以下に保存されています。
<CRT 配布元フォルダー : 64 bit OS に Visual Studio 2015 をインストールしている場合>
(64 bit アプリケーション用) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x64
(32 bit アプリケーション用) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86
Visual C++ 2015 アプリケーションで C ランタイム ライブラリをローカル配置する必要がある場合には、上記内容についてご留意ください。