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++ ⇒ VC++2015製のアプリを配る際のランタイムDLLの扱い