web-dev-qa-db-ja.com

「#pragma comment」とはどういう意味ですか?

以下の#pragma commentはどういう意味ですか?

#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
164
user198729

#pragma commentは、生成されたオブジェクトファイルにコメントを残すようVisual C++に指示するコンパイラディレクティブです。このコメントは、オブジェクトファイルを処理するときにリンカーによって読み取られます。

#pragma comment(lib, libname)は、Linker->Input->Additional dependenciesのプロジェクトプロパティに追加したかのように、ライブラリの依存関係のリストに 'libname'ライブラリを追加するようにリンカーに指示します

MSDNの #pragma comment を参照してください

174
KeatsPeeks

私は常に「コンパイラ指令」と呼んでいます。これらは、コンパイル段階で、上記のようなライブラリを含む分岐、特定のエラーの無効化などを行うようコンパイラーに指示します。

コンパイラー会社は通常、独自の拡張機能を作成して機能を促進します。たとえば、Microsoftは「#pragma once」取引を開始しましたが、それはMS製品のみでしたが、今はよくわかりません。

Pragma Directives 表示されるテーブルに「#pragma comment」が含まれています。

HTH

たとえば、GCCには独自の#pragmaのセットがあると思います。

4
JustBoo

これらは、MSVC++で選択されたライブラリにリンクします。

0
bobobobo

プラグマディレクティブは、オペレーティングシステムまたはマシン固有(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.libuser32.libがリンカーによって検索され、最終的な実行可能ファイルに含まれます。

0
Shrikanth N