1

私はC++のDLLを持っています。私は3つの異なるビルドを行う代わりにVS2005/2008/2010で使用できるようにコンパイルする方法はありますか?VS2005/2008/2010で動作するようにDLLをコンパイルする方法

おかげ

+0

「それはうまくいく」とはどういう意味ですか? –

+0

C++のどのバージョンですか? – GolezTrol

+0

この質問は実際には意味がありません! –

答えて

3

一般に、Visual Studioにリンクしている場合は、任意のバージョンのVisual StudioでC++ dllを「使用する」ことができます。

しかし、dllがコンパイルされると、特定のバージョンのC++ランタイムにターゲットが絞られるため、プログラムのエンドユーザーはそのランタイム(Visual C++再配布可能パッケージ)を自分のPCにインストールする必要があります。したがって、VS2005で構築されたDLLとVS2010で構築されたexeを使用する場合、エンドユーザーは2005年と2010年の再頒布可能パッケージの両方をインストールする必要があります。

これを行うと、1つのランタイムバージョンに割り当てられたメモリを別のランタイムバージョンで割り当て解除することができないというメモリ割り当てにも注意する必要があります。だからあなたのdllが割り当てるものはdllによって割り当て解除されなければならず、あなたのexeによって割り当てられたものはdllによって割り当て解除されてはいけません。

結果として、ほとんどの人は、互換性の問題を最小限に抑えるために、残りのプログラムをビルドするのと同じバージョンのVSでDLLを再構築します。最終的に、VSの各verisonをソートそうしないことに関わるすべての問題を解決する。

(ヒント:あなたは、コマンドラインからVSを実行し、プロジェクト/ソリューションを構築するために取得、それは一度にすべての3つのバリエーションを構築する自動化するバッチスクリプトを書くために5分の仕事だことができます)

0

使用中のVisual Studioのバージョンでは、特定のアセンブリを参照することができるかどうかについての違いはありません。

重要なのは、アセンブリがコンパイルされたバージョンのフレームワークだけです。とにかく.netアセンブリであると仮定します。

いずれにせよ、各フレームワークrev(2.0,3.5、および4.0)に対してコンパイルされたバージョンを提供するのが一般的です。

ただし、アンマネージC++ DLLをコンパイルする場合は、そのDLLの32ビット版と64ビット版を提供するだけです。この場合、使用している.netバージョン(およびそれに関するVisual Studioバージョン)は重要ではありません。

関連する問題