web-dev-qa-db-ja.com

Visual Studio 2015でC ++プロジェクトを更新して新しいユニバーサルCRTを使用するにはどうすればよいですか?

VS2015が私のプロジェクトを新しいプラットフォームツールセットv140に更新した後、リンカーエラーが原因でビルドに失敗します。LNK1104はファイル 'libucrt.lib'を開けません。

この記事で述べたように、このライブラリは新しいユニバーサルCRTによって移動されたようです: http://blogs.msdn.com/b/vcblog/archive/2015/03/03/introducing-the- universal-crt.aspx?PageIndex = 2

記事は私が今何に向けてリンクするべきかを教えてくれますが、その方法の説明はしていません。

私のソリューションは、使用する.exeと.dllを生成します。記事で以下に説明するマトリックスをどうするかわかりません。

DLLのリリース(/ MD):msvcrt.lib vcruntime.lib ucrt.lib

静的リリース(/ MT):libcmt.lib libvcruntime.lib libucrt.lib

15
Jesse Meyer

プロジェクトを変換するときは、インクルードとリンカー設定の両方を更新して、新しいCRTを指すようにする必要があります。

インクルードの場合、以下を追加します。

$(UniversalCRT_IncludePath)

リンクについては、ターゲットプロセッサに応じて次のいずれかを追加します。

$(UniversalCRT_LibraryPath_x86)
$(UniversalCRT_LibraryPath_x64)
$(UniversalCRT_LibraryPath_arm)
11
Ryan Bemrose

組み込み変数$(LibraryPath)は、VS 2015のUCRTパスを含む、Visual Studioでアプリケーションをビルドするために必要なすべてのライブラリパスに解決されます。

注:include pathも更新する必要がある場合があります。そのための移植可能な組み込み変数は$(IncludePath)です。

または、ライブラリが必要ない場合やパスのカスタマイズを含める場合は、デフォルトを使用することをお勧めします(<inherit from parent or defaults>を選択)。

注2:複数のプロジェクトと複数のターゲットのパスを同時に調整できます。複数のプロジェクトを選択し、次に"properties"を選択します。

3
rustyx

デフォルトでは、vs2015でプロジェクトをコンパイルすると、ユニバーサルCRTが使用されます。 (特別なことは必要ありません)

しかし、静的にリンクしたい場合(そしてucrt依存関係を解消したい場合)-この記事を読んでください:

Visual Studio 2015ランタイム依存関係、またはUniversal CRTを取り除く方法

2
TarmoPikaro

SDK 10.0.10586.0をダウンロードしました。C:\ Program Files(x86)\ Windows Kits\10\Lib\10.0.10586.0\ucrt\x64にlibucrt.libライブラリが含まれています。しかし、このライブラリを見つけるためのリンカを取得できません。 10240(以前にインストールされたバージョン)を使用します。

上記のマクロ$(LibraryPath)と$(UniversalCRT_LibraryPath_x64)はどちらもC:\ Program Files(x86)\ Windows Kits\10\lib\10.0.10240.0\ucrt\x64を参照します。これらのマクロの値を変更する方法がわかりません。おそらく、リンカーが適切なライブラリを使用するために必要です。

Windows 7 Pro、64ビット、Visual Studio 2015 update 1.静的ライブラリ、C++、およびIntel Fortranプロジェクトをリンクします。

2
Woody20