web-dev-qa-db-ja.com

Visual Studio 2012を使用し、古いプラットフォームツールセットでコンパイルしますか?

問題

Visual Studio 2012を使用してC++ DLLを開発しています。一部のマシンでは、「v110」に設定されているプラ​​ットフォームツールセットが見つからないため、これらのDLLをロードできません。

古いc ++ランタイムをインストールしようとしました。 「新しいバージョンが既にインストールされている」ため、インストールされませんでした。現在のWindows SDKもインストールしましたが、v110以外に選択できるアイテムはまだありません。

質問

開発者以外のマシンで実行できるように、C++ランタイムの古いバージョンでC++ DLLをコンパイルするにはどうすればよいですか?

Platform toolset is v110

30
bytecode77

MSDNのこのページ によると、対応するバージョンのVisual Studio(2008または2010)、または「プラットフォームツールセット」ドロップダウン用の関連するWindows SDKが必要です。

ターゲットプラットフォームツールセットを変更するには、関連するバージョンのVisual StudioまたはWindows Platform SDKがインストールされている必要があります。

また、どのコンパイラ/リンカー/などを制御する「プラットフォームツールセット」の間で少し混乱しているように見えます。アプリケーションのbuildに使用され、アプリケーションのrunに必要な「Visual C++再頒布可能」。ユーザーのPCに「プラットフォームツールセット」をインストールすることはできません。また、開発用PCに特定の「Visual C++再頒布可能パッケージ」をインストールすることで利用可能にすることもできません。

また、私の知る限り、Visual C++再頒布可能パッケージにはMFCランタイムは含まれていません。これらは、別個のMSIマージモジュール(MSM)として利用できます。

23
Roger Lipscombe

いくつかの情報を共有したいと思います。それを見つけて、それらを目的に使用する方法を見つけました。

どうやら、静的リンクを使用するのに良いオプションです。それはいつも私にとってはうまくいきませんでしたが、私の小さなプロジェクトでは、かなりうまくいきます。そして、結果はDLLであり、kernel32.dllなどの依存関係はありません。

リリース構成に/MTを使用し、デバッグに/MTdを使用するだけで問題ありません。

ここでの問題は、私のような開発者がリリース直後に現在のVisual Studioバージョンを入手することですが、一般的なユーザーが数週間前のランタイムをインストールすることを期待できないことです。そして、古いランタイムを使用するためだけに異なるバージョンのVisual Studioをインストールすることは、間違いなく望みのものではありません。

Static linking in Visual Studio 2013

7
bytecode77

インターネットアーカイブのヒント。 (上記のステートメントにコメントすることはできません、理由はわかりません)

新しいVisual Studio(I testet 2013および2015)でv90プラットフォームツールセット(= Visual Studio 2008)を使用するには、Visual Studio 2008とVisual Studio 2010をインストールする必要があります。 MSビルドプログラムフォルダー内はVisual Studio 2010の一部です。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets v90およびv100用

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0

v110 V120およびV140

visual Studioバージョンを表す:v90 = 2008、v100 = 2010、V110 = 2012、V120 = 2013、V140 = 2015。

インストールvob VS2010の後、新しいVisual Studio 2013および2015バージョンはvs90およびvs100プラットフォームツールセットを使用できます。 (これは、Visual Studio 2013/2015を新しくインストールしなくても、すぐに動作します。)Visual Studio 2012は、VS2013やVS2015と同じように実行しています。

2
bernie3280109

まあそれはあなたが構築しようとしているものに依存します。 Windows SDK 7.1のインストールを介してサポートされる場合があります。 この投稿、同じ質問を参照 、ただし、プロジェクトがMFCに依存している場合は、残念ながら、主にVS2010がMFCライブラリを展開しているため、まったく不可能であるように見えます。

1
4pie0