質問

私はいくつかの同様の質問がある知っているが、私は彼らが本当に私のものと同じ要件を持っていないと思います。

私たちのDLLが原因インストールの制約には、Visual Studio 2005およびCRTの特定のバージョンとの必要がありますが、のリンクを使用してコンパイルされます。これは、最新バージョンでそれを再コンパイルするソリューションではありません、絶対的である。

我々は最近、私たちのBoostライブラリを更新しました。私はブーストを建てたときしかし、それは自動的に最新のCRTを使用しました。私は、我々のプログラムでブーストをリンクする際に今、それはCRTの最新(間違った)バージョンとCRTの古い(正しい)バージョンの両方への依存を作成します。最新バージョンへの依存が行く必要があります。

この問題を解決する最善の方法は何ですか?現時点では、私は考えることができる最善のは、古いバージョンを使用してブーストを再構築しているが、私は簡単にソースを変更せずにそれを行う方法を見当がつかないます。

(ないプロジェクトごとに)グローバルCRTの特定のバージョンを使用するようにVisual Studioのを強制する方法があった場合は、

、それは素晴らしいことです。または方法は、単なるCRTの最新バージョンを削除するために、私は、私はそれはOSの一部と考えていると思いので、それが不可能だと確信しています。

役に立ちましたか?

解決 2

溶液は手動では、動的にリンクされたCRTで組み込まれているので、最新のCRT依存性を除去するために埋め込まれたマニフェストを修正しました。でも、私はこのの安全性を疑問視ます。

何らかの理由で、ブーストビルドプロセス中にtargetsxsファイルなどの力が指定されたCRTをターゲットにすることを強制するものではありませんでした。

他のヒント

私の知る限り、CRTの異なるバージョンを使用することは推奨されません。あなたは.NET 2.0 DLLから.NET 1.1 DLLを参照することができます.NETとは異なり、非管理はその柔軟性を提供していません。

あなたは、新しいCRTを使用するようにDLLをアップグレードすることはできませんので、

、あなたが行うことができる唯一のことは、VS2005でのブーストを再構築されます。

また、それは、異なるCRTの2つのDLLをリンクに推奨されません。これは、メモリの破損などの問題が発生する可能性があります。

注:各Visual Studioは、すべてのDLLが参照するデフォルトのCRTのバージョンを持っている。

また、私は「新しいCRTを削除し、」理解していませんでした。あなたが使用してのVisual Studioの各バージョンのVisual Studioの再頒布をインストールする必要があります。 (すなわちREDISTは、CRT DLLを含有します) http://msdn.microsoft.com/en-私たち/ライブラリ/ abx4dbyh%28VS.80%29.aspxする

あなたは間違ったCRTへの依存を注入ブーストプロジェクト内のどの構造を正確に見つけて削除/その構造を変更する必要があります。これは、.vcprojファイルで何かまたはいくつかのマニフェストまたはそのような何かかもしれません。

VC ++ 2005とVC ++ 2008のCRTは多かれ少なかれ同じプリミティブが含まれている - あなたはおそらくVC ++ 2005で完全に後押し再コンパイルするか、それを少し微調整し、その後、再コンパイルすることができます。はい、これはいくつかの努力が必要になりますが、それは行くための唯一の方法である - あなたのコードとブーストコードの両方を使用するCRTのバージョンに対してコンパイルする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top