Visual C++ 2015は、ランタイムライブラリの構成が大きく変化しました。Visual C++ランタイムのうち枯れた部分をOSの一部にする、それをユニバーサルCRT (UCRT)と称するということのようです。詳しくはIntroducing the Universal CRT – Visual C++ Team Blogに説明されています。

問題は、VC++で作ったアプリケーションを頒布するときです。UCRTは、Windows 10には搭載されていますが、それ以前のWindowsには当然ありません。そこで、現在次の選択肢があります。VC++ 2013までと比べ、UCRTをどうするかということで選択肢が増えました。

  • vcredist_x86.exeやvcredist_x64.exeをアプリの利用者にインストールしてもらう(UCRTが一緒にインストールされる)。
  • アプリのインストーラに上記を含めておき、同時にインストールする。
  • UCRTをアプリの利用者にインストールしてもらう。VC++ランタイムを従来どおりアプリと同じフォルダに置いておく。UCRTの最新版は、KB3118401: Windows での汎用の C ランタイムの更新プログラムです。初期版はKB2999226でした。
  • アプリのインストーラに上記KBを含めておき、同時にインストールする。
  • (※)UCRTもVC++ランタイム同様、アプリと同じフォルダに置く。
  • 静的リンク(/MT)する。

なお、下から2番目の※「UCRTをアプリと同じフォルダに置くこと(App-local)」は、途中で方針転換されてOKになりました。なお、実例としてVisual Studio 2015のリモートデバッガーがそうなっています(これは伏線になるのであった)。

次回、アプリにUCRTを同梱する方法についてです:

2016年4月19日編集: uCRTをUCRTに置き換えました。UCRTをアプリと同じフォルダに置く (VS2015 Update 1, 2)へのリンクを追加しました。
2016年5月14日編集: UCRTの最新版KB3118401の記載を追加しました。


スポンサード リンク

この記事のカテゴリ

  • ⇒ VC++2015製のアプリを配る際のランタイムDLLの扱い