web-dev-qa-db-ja.com

Visual Studioの追加の依存関係を使用する場合

C++では、ヘッダーファイル(.h)、(。lib)ファイル、および(.dll)ファイルがあります。

Visual Studioでは、次の3つの異なる場所でこれらのファイルを検索する場所を指定します。

  1. 構成プロパティ=> C/C++ =>一般=>追加のインクルードディレクトリ。ここでは、検索して利用可能にする「include」ディレクトリをリストします。

  2. 構成プロパティ=>リンカー=>一般=>追加のライブラリディレクトリ。ここでは、検索して利用可能にする「lib」ディレクトリをリストします。

  3. 構成プロパティ=>リンカー=>入力=>追加の依存関係。ここで、インクルードする.libファイルを明示的に指定します。

質問は次のとおりです。

Q1:#1にヘッダーファイルを指定し、#2にlibを指定した場合、#3に何を指定したいのですか?

Q2:#3にlibの特定のデバッグバージョンまたはリリースバージョンを含む人々がいます。 #3でlibのデバッグバージョンまたはリリースバージョンを指定しても、リリースモードまたはデバッグモードでビルドできますか?理想的には、ライブラリデバッグ/リリースのどのバージョンをここに提供する必要がありますか?

48
user205834
  1. 構成プロパティ=> C/C++ =>一般=>追加のインクルードディレクトリ。ここでは、検索して利用可能にする「include」ディレクトリをリストします。

これは、山括弧で囲まれたヘッダーファイルを探す場所をコンパイラに指示します。これは、コンパイラー(またはプリプロセッサー)の仕事に影響します。

  1. 構成プロパティ=>リンカー=>一般=>追加のライブラリディレクトリ。ここでは、検索して利用可能にする「lib」ディレクトリをリストします。

これにより、ライブラリを探す場所(つまり、どのディレクトリを探すか)がリンカーに伝えられます。これは、リンカ(コンパイラではなく)がジョブを実行する方法に影響します。

  1. 構成プロパティ=>リンカー=>入力=>追加の依存関係。ここで、インクルードする.libファイルを明示的に指定します。

これにより、これらのディレクトリで検索するライブラリをリンカーに指示します。これは、リンカがジョブを実行する方法にも影響します。

Q1:通常、2を使用する場合、ほぼ確実に3も使用する必要があります。 3はリンクするライブラリを示し、2はそのライブラリの場所を示します。もちろん、複数のライブラリにすることもできます。

Q2:デバッグライブラリとリリースライブラリの両方が提供されている場合、通常デバッグビルドでデバッグバージョンを使用し、リリースビルドでリリースバージョンを使用する必要があります。ダイアログの左上で、変更する構成を選択します。通常、デバッグ用とリリース用の両方のディレクトリを指定しますが、デバッグ用とリリース用に個別のライブラリを指定します。

38
Jerry Coffin

明らかなことを指摘するために、プロジェクトのプロパティ設定で使用している.hファイルを追加する必要はありません。ソースコードに明示的に含めるため、既にあるパスのヘッダーを検索します提供されます。

4
Claude

Q2について...

サードパーティライブラリの場合、Visual Studio Build Commandマクロ変数$(Platform)および$(Configuration)を利用して、次のように入力します。

Y:\dev3\cpp\cryptopp\cryptopp561\$(Platform)\Output\$(Configuration);...

この方法で、同じ行を入力するだけで、Visual Studioがマクロ変数を置き換えて、\cryptopp561\Win32\Output\Release\または\cryptopp561\Win32\Output\Debug\アクティブな構成に応じて。それは実際に多くのタイピングを節約しませんが、物事の一貫性と正確さを保つのに役立ちます。

2
JasDev

また、上記の場所でディレクトリに追加するときは、マクロ>>ボタンを見てください。例えば32ビット/ 64ビット/リリースおよびデバッグ用に異なるライブラリを使用することもできます。 ($ ProjectDir)MACROを使用して相対リンクを指定できます。 ($ DXSDK_DIR)MACROを使用して、DirectX開発に適したライブラリを取得します。

したがって、($ DXSDK_DIR)\ Lib\x86と($ DXSDK_DIR)\ Lib\x64があります。これらは、開発用に32ビットと64ビットのWindows OSを移動するときにも問題を取り除きます。

2
Mark