15

これまで、いくつかのアプリケーション用のプラグインを作成しようとしてきました。これらは常に dll ファイルであり、さまざまなアプリの SDK ドキュメントの指示に従いましたが、自分が何をしているのか本当に理解できませんでした。これを改善するために、dll の処理を​​含む、C++ でのプログラミングのいくつかの実用的な側面を扱うリソースを見つけようとしました。私の頭の上のリストは次のとおりです。

  • dll ファイル、それらは何に使用され、その理由は何ですか?
  • なぜlibsよりもdllファイルを使用するのですか?
  • その .def ファイルは何ですか、それはマイクロソフトだけのものですか?
  • マニフェスト ファイルとは何ですか?
  • ...

基本的に、IDE (私にとっては Visual Studio と XCxcode) で見ることができる素敵なオプションのすべて - それらが何であるかを学び、「hello world」アプリケーションを書くよりも少し複雑なコードと組み合わせて使用​​する方法? 私は、プログラミングに関するより「アーキテクチャー的な見方」を探していると思います。私がこれまでに書いたすべての C++ の本で見つけた最大のことは、常に に関するセクション source code > object code > linked w/ other obj code > executable があるということですが、それだけです。

では、C++ 構文以外のことを学びたいという私の立場にある人にとって、何か良い本はありますか? コードについても、オブジェクト指向についても、STL についても知っています。次のステップのために良い本かリソースが必要です。

ありがとう!(それが少しあいまいな質問である場合は申し訳ありませんが、これに来ました)

4

4 に答える 4

10

dll ファイル、それらは何に使用され、その理由は何ですか?

dll ファイルは、Microsoft Windows の .exe ファイルと同じです (ヘッダーの 1 ビットが DLL であることを除いて)。dlls メモリは、それを使用するすべてのプログラムで共有され、メモリを節約します。DLL はオンデマンドで RAM からロードおよびアンロードできるため、メモリを節約できます。また、.exe を再コンパイルする必要なく、個別に更新することもできます(ソース コードが利用できない場合があります)。

なぜlibsよりもdllファイルを使用するのですか?

スタティック ライブラリとも呼ばれるライブラリでは、変更が行われるたびに exe を再コンパイルする必要がありますが、DLL では必要ありません。DLLは、複数のプロセスがそれらを使用する場合にメモリを節約し、中央の場所からすべてのプログラムを更新できます。ライブラリの場合、すべての .exe を個別に再コンパイルして置き換える必要があります。dll は、exe に含める必要がある追加のファイルであるため、dll はインターネット配布には適していません。

その .def ファイルは何ですか、それはマイクロソフトだけのものですか?

.def は、dll (API) をメモリ内に配置する方法をコンパイラに指示するコンパイラ固有のファイルです。サポートされている機能と構文は異なりますが、gcc を含むさまざまなコンパイラで使用できます。

マニフェスト ファイルとは何ですか?

マニフェストは Windows XP SP3 の新機能です。基本的に、必要なシステム ライブラリのバージョンと、バイナリを実行するために管理者権限が必要かどうかを Windows に通知します。(dll は、1 つのビットが異なる単なる exe であることを忘れないでください)。マンフェストは、実行可能ファイルが正当かどうかを検証するコード署名にも使用されると思います。

于 2012-09-27T10:49:33.037 に答える
4

C++ での DLL プログラミングに関する CodeProject に関する優れた 記事があります。

于 2012-09-27T10:46:30.747 に答える
3

CodeGuru でこれが本当に気に入りました: http://www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c9855/DLL-Tutorial-For-Beginners.htm

初心者向けですが、とても参考になりました。

于 2014-03-25T07:48:29.797 に答える
1

以下参考にさせていただきます。それらがあなたに役立つかどうかを確認してください。

  1. C++ DLL プログラミング
  2. アセンブリ
于 2012-09-27T10:37:48.000 に答える