以下の#pragma comment
はどういう意味ですか?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
#pragma comment
は、生成されたオブジェクトファイルにコメントを残すようVisual C++に指示するコンパイラディレクティブです。このコメントは、オブジェクトファイルを処理するときにリンカーによって読み取られます。
#pragma comment(lib, libname)
は、Linker->Input->Additional dependencies
のプロジェクトプロパティに追加したかのように、ライブラリの依存関係のリストに 'libname'ライブラリを追加するようにリンカーに指示します
MSDNの #pragma comment を参照してください
私は常に「コンパイラ指令」と呼んでいます。これらは、コンパイル段階で、上記のようなライブラリを含む分岐、特定のエラーの無効化などを行うようコンパイラーに指示します。
コンパイラー会社は通常、独自の拡張機能を作成して機能を促進します。たとえば、Microsoftは「#pragma once」取引を開始しましたが、それはMS製品のみでしたが、今はよくわかりません。
Pragma Directives 表示されるテーブルに「#pragma comment」が含まれています。
HTH
たとえば、GCCには独自の#pragmaのセットがあると思います。
これらは、MSVC++で選択されたライブラリにリンクします。
プラグマディレクティブは、オペレーティングシステムまたはマシン固有(x86またはx64など)のコンパイラオプションを指定します。いくつかのオプションが利用可能です。詳細は https://msdn.Microsoft.com/en-us/library/d9x1s805.aspx にあります。
#pragma comment( comment-type [,"commentstring"] )
にはこの形式があります。
さまざまなコメントタイプの詳細については、 https://msdn.Microsoft.com/en-us/library/7f0aews7.aspx を参照してください。
#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")
上記のコード行には、リンカーが検索する必要があるライブラリ名(またはパス)が含まれています。これらの詳細は、オブジェクトファイルのライブラリ検索レコードの一部として含まれています。
したがって、この場合、kernel.lib
とuser32.lib
がリンカーによって検索され、最終的な実行可能ファイルに含まれます。