2

これで私を助けてくれることを願っています。

Visual Studion 2005 SP1 の最新バージョン (5592) ではなく、バージョン 4053 の CRT (/MD) を使用して dll (サードパーティ以外のライブラリを静的にリンク) をビルドしたいと考えています。

これを達成するには、次の方法を使用するだけで十分かどうか疑問に思っています。私の理解では、ソリューションのすべての依存プロジェクトでこのメソッドを使用すると、dll の埋め込みマニフェストが変更され、要求された CRT (および MFC、ATL) のバージョンが示されます。この仮定は正しいですか?

dll の埋め込みマニフェストに必要なバージョンが十分に記載されていることを確認するだけですか? dll をビルドするとき (特定のライブラリを無視して)、古い (4053) CRT dll (msvcr80.dll) に属する正しいインポート ライブラリ (msvcrt.lib) を使用するべきではありませんか? このようなマイナー バージョンの変更で、このインポート ライブラリ (msvcrt.lib) はどのように変更されますか?

前もって感謝します!

マーク・モーセン

4

1 に答える 1

1

CRTのバージョン番号は、vc / include/crtassem.hで宣言されています。MFCの場合は、vc / atlmfc / include/mfcassem.hです。ATLの場合は、vc / atlmfc / include/atlassem.hです。開発マシンにセキュリティアップデートをインストールした場合、これらのファイルはアップデートされます。#define _CRT_ASSEMBLY_VERSION xyzw(etcetera)を#includeの前に使用すると、そのバージョン番号が上書きされます。セキュリティアップデートのアンインストールも同様です。

それ以外の場合、これは賢明ではありません。セキュリティ更新プログラムがインストールされている場合、ターゲットマシンは引き続きDLLの.5592リビジョンを使用します。バージョン番号をリダイレクトする「パブリッシャーポリシー」を展開し、古いプログラムに自動的にパッチが適用されるようにします。もちろん、顧客のマシンで実行されるバージョンをテストするのが常に最善です。また、既知のセキュリティ問題を抱えたインストーラーを出荷することは、顧客に喜ばれることはめったにありません。

于 2011-04-26T13:08:37.717 に答える