問題
Visual Studio 2012を使用してC++ DLLを開発しています。一部のマシンでは、「v110」に設定されているプラットフォームツールセットが見つからないため、これらのDLLをロードできません。
古いc ++ランタイムをインストールしようとしました。 「新しいバージョンが既にインストールされている」ため、インストールされませんでした。現在のWindows SDKもインストールしましたが、v110以外に選択できるアイテムはまだありません。
質問
開発者以外のマシンで実行できるように、C++ランタイムの古いバージョンでC++ DLLをコンパイルするにはどうすればよいですか?
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)として利用できます。
いくつかの情報を共有したいと思います。それを見つけて、それらを目的に使用する方法を見つけました。
どうやら、静的リンクを使用するのに良いオプションです。それはいつも私にとってはうまくいきませんでしたが、私の小さなプロジェクトでは、かなりうまくいきます。そして、結果はDLLであり、kernel32.dll
などの依存関係はありません。
リリース構成に/MT
を使用し、デバッグに/MTd
を使用するだけで問題ありません。
ここでの問題は、私のような開発者がリリース直後に現在のVisual Studioバージョンを入手することですが、一般的なユーザーが数週間前のランタイムをインストールすることを期待できないことです。そして、古いランタイムを使用するためだけに異なるバージョンのVisual Studioをインストールすることは、間違いなく望みのものではありません。
インターネットアーカイブのヒント。 (上記のステートメントにコメントすることはできません、理由はわかりません)
新しい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と同じように実行しています。
まあそれはあなたが構築しようとしているものに依存します。 Windows SDK 7.1のインストールを介してサポートされる場合があります。 この投稿、同じ質問を参照 、ただし、プロジェクトがMFCに依存している場合は、残念ながら、主にVS2010がMFCライブラリを展開しているため、まったく不可能であるように見えます。