web-dev-qa-db-ja.com

visual c ++:同じソリューション内の他のプロジェクトからの#includeファイル

私はVisual C++を使用してゲームに取り組んでいます。別のプロジェクトにいくつかのコンポーネントがあり、プロジェクトの依存関係を設定しました。別のプロジェクトのヘッダーファイルを#includeするにはどうすればよいですか?あるプロジェクトのクラスを別のプロジェクトで使用する方法がわかりません。

109
rlbond

コンパイラの設定

anotherプロジェクトからヘッダーファイルを#includeするプロジェクトでは、ヘッダーファイルのパスをプロジェクト構成の追加のインクルードディレクトリセクション。

プロジェクト構成にアクセスするには:

  1. プロジェクトを右クリックして、[プロパティ]を選択します。
  2. [構成プロパティ]-> [C/C++]-> [一般]を選択します。
  3. 追加インクルードディレクトリの下にパスを設定します。

含める方法

ヘッダーファイルを含めるには、コードに次のように記述します。

#include "filename.h"

追加のインクルードディレクトリにディレクトリを既に含めているため、ここでパスを指定する必要はないことに注意してください。そのため、Visual Studioがそれを探す場所を認識します。

プロジェクト設定にすべてのヘッダーファイルの場所を追加したくない場合は、ポイントまでディレクトリを追加し、そのポイントに相対して#includeするだけです。

// In project settings
Additional Include Directories    ..\..\libroot

// In code
#include "lib1/lib1.h"    // path is relative to libroot
#include "lib2/lib2.h"    // path is relative to libroot

リンカーの設定

静的ライブラリ(つまり、.libファイル)を使用する場合、リンカ入力時にライブラリを追加する必要があります。これにより、リンケージ時にシンボルをリンクできます(そうしないと、未解決のシンボルが取得されます)。

  1. プロジェクトを右クリックして、[プロパティ]を選択します。
  2. [構成プロパティ]-> [リンカー]-> [入力]を選択します。
  3. [追加の依存関係]の下にライブラリを入力します。
194

#includeはプロジェクトとは何の関係もありません-プリプロセッサに「ヘッダーファイルの内容をここに置く」だけです。正しい場所を指すパス(../your_file.hなどの相対パスの場合もあります)を指定すると、正しく含まれます。

ただし、そのようなプロジェクトを適切にリンクするには、ライブラリ(静的/動的ライブラリ)について学習する必要がありますが、それは別の質問です。

4
Assaf Lavie

プロジェクトプロパティでヘッダーへのパスを設定して、ヘッダーファイルを見つけようとするときにコンパイラがそこを参照するようにする必要があります。正確な場所は覚えていませんが、プロジェクトのプロパティを確認すると、表示されるはずです。

2
Rosstified

両方のプロジェクトが同じソリューションの下にあるので、 https://docs.Microsoft.com/en-us/cpp/build/adding-references-in- visual-cpp-projects?view = vs-2019

  1. インクルードは、相対パス(例:#include "../libProject/libHeader.h")で記述できます。
  2. リンカについては、「参照」を右クリックし、「参照の追加」をクリックして、他のプロジェクトを選択します。
0
Benav

絶対であろうと相対であろうと、#includeディレクティブの完全なパス参照を避けるようにしてください。代わりに、プロジェクト設定に他のプロジェクトのインクルードフォルダーの場所を追加します。必要な場合は、パス参照でサブフォルダーのみを使用してください。そうすれば、コードを更新しなくても物事を簡単に移動できます。

0
cdonner