ここでは何も起こりません...間違いを見つけたら、チャイムを鳴らしてください。
1. 「C/C++ ランタイム ライブラリ」と「C/C++ 標準ライブラリ」に違いはありますか?
はいといいえ。ランタイム ライブラリを使用してすべてを意味し、標準ライブラリを完全に無視する場合があります (Microsoft ツールの場合)。ただし、技術的には、ランタイム ライブラリは実行時に読み込まれるため、.lib (インポート ライブラリ) と .dll のペアが含まれます。詳細については、http: //msdn.microsoft.com/en-us/library/vstudio/abx4dbyh (v=vs.100).aspx を参照してください。
技術的には、libc* は標準ライブラリで、*crt はランタイム ライブラリです。
2. 「C/C++ ランタイム ライブラリ」ライブラリがプロジェクトに静的にリンクされているか、動的にリンクされているかはどうすればわかりますか?
IDE (VS2010、他も同様) を使用している場合、これはプロジェクトのプロパティにあります。
- configuration properties
- c/c++
- code generation
[Runtime Library]
3. このライブラリがファイルシステムのどこにあるかを知るにはどうすればよいですか?
lib ファイルは、sdk (新しい Windows SDK をインストールした場合) または Visual C++ ディレクトリの lib ディレクトリにあります。
4. 「C/C++ ランタイム ライブラリ」がプロジェクトに動的にリンクされている場合、どの「.dll」が使用され、使用された「.dll」がファイル システムのどこにあるかを知るにはどうすればよいですか?
依存ツールを使用して、どれが使用されているかを把握できます。 http://www.dependencywalker.com/
DLL は、Windows ディレクトリのどこかにあります。彼らはそれらを移動し、バージョンを追跡するためのマニフェストやものを備えたファンキーな場所になりました. 私はこれについてあまり心配しません。これについて心配する必要がある場合は、おそらく何かが間違っています。詳細:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa375365(v=vs.85).aspx
http://en.wikipedia.org/wiki/Side-by-side_assembly
これが懸念される場合は、インストーラーに再頒布可能パッケージをバンドルできます: Visual Studio Redistributable と Visual Studio SP1 の違い
5. 「C/C++ ランタイム ライブラリ」をプロジェクトに静的にリンクするとします。ソース コードから生成された実行可能ファイルがすべての Windows プラットフォーム (XP/Vista/Seven/...、32 ビット) で動作することを確認できますか? /64 ビット)?
はい、静的にリンクすると、dll が見つからないという点でより安全になります。ただし、これにより実行可能ファイルが大きくなります。動作に関して他の結果があります...列挙するのは難しいですが、違いは、ライブラリがdllにあるのとexeにコンパイルされているという事実に由来します。
6. 「C/C++ ランタイム ライブラリ」をプロジェクトに動的にリンクすることの利点/欠点は何ですか?
dll を使用する理由:
a - サイズ。ユーザーのシステムに既にインストールされているはずのすべてのライブラリーが dll に含まれているため、exe のサイズが小さくなりますが、そうでない場合もあります。
b - ランタイムにバグがある場合、Microsoft は新しいリリースをユーザーにプッシュできます。対処する必要はありません。静的にリンクする場合は、新しい exe をユーザーにプッシュする必要があります。
dll を使用しない理由:
a - dll の処理に関する多くの問題。redist をバンドルするのを忘れると、多くの問題が発生する可能性があります。
b - ロードおよびアンロードする dll が増えると、起動および終了時間が遅くなります。
思いもよらない別の理由があったのかもしれません…
7. 「C/C++ ランタイム ライブラリ」をプロジェクトに静的または動的にリンクする必要がありますか?
それは本当に依存します。個人的には静的リンクの方が好きです。私は、適切な redist/dll/etc を探し回るのが嫌いです。