2009-08-04 15 views
4

Visual Studio 2008のランタイムライブラリに関するいくつかの情報をお伝えしたいと思います。最も具体的にはDLLのバージョンを検討する必要があります。Visual Studio 2008ランタイムライブラリの使用法のアドバイス

Visual Studioのドキュメントでは、DLLの依存関係とリンクされたライブラリに関する技術的な違いについて説明しています。しかし、なぜ私はもう一方を使いたいのだろうと思っています。さらに重要なのは、マルチスレッドDLLランタイムを使用する理由は、アプリケーションがDLL依存関係になってしまっているのに対して、静的ランタイムにはアプリケーションユーザーマシンにそのような要件がないことです。

+1

このスレッドでは、同じことについて説明しています:http://stackoverflow.com/questions/238465/static-or-dynamic-linking-the-crt-mfc-atl-etc – Laserallan

+0

私はそれを見ることができます。謝罪いたします。私の検索スキルは失敗しました。 –

+0

はい、しかし、そのスレッドはDavid Citronの非常に良い答えを得られなかったので、あなたが再びそれを持ってきて良かった:) – Laserallan

答えて

3

Larry Ostermanは、アプリケーションプログラミングのためにalways use the multi-threaded DLLを実行する必要があると感じています。要約すると:

  • をアプリがあなたのアプリがあなたのアプリは(あなたのアプリは、より簡単に複数のDLLに分割することができ、ライブラリの依存関係
  • を変更することなく、複数のスレッドをサポートする速く
  • ロードします
  • 小さくなりますのみロードされたランタイムライブラリ)の1つのインスタンスが存在しますので、
  • は、アプリが自動的に
マイクロソフトによって出荷セキュリティ修正を最新の状態に滞在します

詳しくはwhole blog postをお読みください。

実行時ライブラリにはredistributeが必要ですが、これは一般的に行われており、インストーラへの組み込み方法についてはdocumentationがあります。

5

ランタイムライブラリに動的にリンクすると、DLLの依存性のために配備がわずかに複雑になりますが、アプリケーションを再コンパイルせずにMSランタイムライブラリに更新(バグ修正またはパフォーマンスの向上が見込まれます)を利用できます。

静的リンクはデプロイメントを簡略化しますが、アプリケーションを使用するためには、ランタイムの新しいバージョンに対してアプリケーションを再コンパイルする必要があります。

1

ランタイムライブラリを動的にリンクすると、プロセス間でDLLを共有することができるため、プログラムの起動時間が短縮され、システムメモリの使用量が削減されます。また、別のプロセスによって既に使用されている場合は、

1

主な違いは例外の処理方法です。この結果は、特に所望され、理解されていない限り、マイクロソフトは、DLLでCRTに静的にリンクすることはお勧めしません:

たとえば、あなたは独自の静的にリンクされているDLLをロードし、実行可能で_set_se_translatorを呼び出す場合CRTでは、DLL内のコードによって生成されたハードウェア例外はトランスレータによって捕捉されませんが、メイン実行可能ファイル内のコードによって生成されたハードウェア例外がキャッチされます。

関連する問題