Delen via


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 ランタイム ライブラリをローカル配置する必要がある場合には、上記内容についてご留意ください。