1

お気づきかもしれませんが、Visual Studio 2005 への更新は、先週、ほとんどのマシンで自動更新されました。このアップデートには、ビジュアル C ランタイム ライブラリの新しいバージョンが含まれていました。その結果、更新後にビルドされたバイナリには、クライアント システムにインストールされた新しい再配布可能ファイルも必要になります。

http://support.microsoft.com/kb/971090/を参照してください。

新しい再頒布可能パッケージのインストーラーは次のとおりです。

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=766a6af7-ec73-40ff-b072-9112bab119c2

これは、新しいバイナリを顧客に配布するのに問題ありません。新しい再配布可能ファイルをインストーラーと共に出荷し、すべて動作します。

ただし、既存の顧客サイトがバグを発見した場合にホットフィックスできるかどうか、本当に心配しています。この場合、通常、修正された dll または exe を送信するだけです。

ただし、今これを行うと、これらの顧客に新しい再配布可能ファイルを送信する必要があり、同じ実行可能ファイルで 2 つの異なるバージョンの C ランタイム ライブラリを使用することになります。

  • これは問題ですか?
  • これによりアプリケーションがクラッシュする可能性はありますか?
  • ある dll にメモリを割り当て、別の dll で割り当てを解除するとどうなりますか? 通常、これは同じリリース ランタイム ライブラリが使用されている場合に機能します。私は約 3 年前にコードを調べてこれをクリーンアップしましたが、すべての発生を見つけて修正したかどうかはわかりません。
  • 異なる dll での割り当て/割り当て解除はまだ問題がありますか? スマートポインターなどの時代になり、これを強制することが非常に必要になりました。
  • マニフェストを変更することで、依存するランタイム ライブラリのバージョンを制御できますか?

ポインタやアドバイスをいただければ幸いです。

更新:この質問 VC++: KB971090 と Visual C ランタイム DLL 依存関係の選択に気付きました これは非常に似ていますが、私の質問は、1 つの実行可能ファイルで 2 つの異なるバージョンのランタイムを使用することに関係しています。

4

3 に答える 3

2

アプリケーションのマニフェスト ファイル/リソースで指定されたバージョン番号は、アプリケーションを実行するために必要な最小バージョンのみを指定します。ローダーの既定の動作では、最初に WINDOWS\WinSxS フォルダーをチェックして、アプリケーション マニフェストで識別された依存関係の同一バージョンまたは置き換えバージョンを確認し、依存関係を含むプライベート アセンブリが既に作成されているかどうかに関係なく、そのバージョンを使用します。アプリケーションで提供されます。( http://msdn.microsoft.com/en-us/library/aa375674(VS.85).aspxを参照)。

したがって、古いバイナリも最新バージョンの Microsoft ランタイム ライブラリを使用する可能性があります。アプリケーションのリリース ビルド (Visual Studio を更新する前にビルド) を完全にパッチが適用されたマシンで実行し、プロセス エクスプローラーを使用してロードされる DLL を確認してください。唯一の問題は、新しいランタイム再配布可能ファイルをパッチに含める必要があることです。

それでも心配な場合は、ここに記載されている方法を試すことができます

于 2009-09-02T04:59:24.160 に答える
2

はい、2 つのランタイム ライブラリを使用して問題を確認するのにあまり待つ必要はありません。

あるランタイムでメモリを割り当て、別のランタイムで解放しようとすると、アプリケーションがクラッシュします。それは今もこれからも問題です。

メモリを予約したランタイムのみが追跡できます。他のランタイムが予約したメモリ量を知ることは不可能です。

msvcrt.dllとのリンクに関する非常に優れた投稿です

于 2009-08-06T16:23:17.360 に答える
1

マニフェストがマイナーリビジョン番号のみが異なる2つのバージョンのCRTを提供する場合、アプリケーションは実行時に新しいバージョンのみを使用することになると聞いています(噂によるだけです)。つまり、複数のCRTで問題が発生することはありません。

これはただのうわさであり、これについて具体的な答えを聞きたいです。

参照:マニフェストのVisualStudio2005セキュリティ更新プログラムとCRTDLLバージョン

于 2009-08-12T16:07:00.177 に答える