visual c ++:同じソリューション内の他のプロジェクトからの#includeファイル
-
03-07-2019 - |
質問
Visual C ++を使用してゲームに取り組んでいます。別のプロジェクトにいくつかのコンポーネントがあり、プロジェクトの依存関係を設定しました。別のプロジェクトのヘッダーファイルを#includeするにはどうすればよいですか?あるプロジェクトのクラスを別のプロジェクトで使用する方法がわかりません。
解決
コンパイラの設定
別のプロジェクトからヘッダーファイルを#includeしたいプロジェクトでは、ヘッダーファイルのパスを Additional Include Directories セクションに追加する必要があります。プロジェクト構成で。
プロジェクト構成にアクセスするには:
- プロジェクトを右クリックして、[プロパティ]を選択します。
- 構成プロパティの選択-> C / C ++->全般。
- 追加インクルードディレクトリの下にパスを設定します。
インクルードする方法
ヘッダーファイルを含めるには、コードに次のように記述します。
#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ファイル)を使用する場合は、ライブラリをリンカー入力に追加する必要があります。これにより、リンク時にシンボルをリンクできます(そうしないと、未解決のシンボルが表示されます)。
- プロジェクトを右クリックして、[プロパティ]を選択します。
- 構成プロパティの選択->リンカー->入力
- 追加の依存関係の下にライブラリを入力します。
他のヒント
#include
はプロジェクトとは何の関係もありません-プリプロセッサに「ここにヘッダーファイルの内容を入力してください」と伝えるだけです。正しい場所を指すパス(../your_file.hなどの相対パスの場合もあります)を指定すると、正しく含まれます。
ただし、そのようなプロジェクトを適切にリンクするには、ライブラリ(静的/動的ライブラリ)について学ぶ必要がありますが、それは別の質問です。
プロジェクトプロパティでヘッダーへのパスを設定する必要があります。これにより、ヘッダーファイルを見つけようとするときにコンパイラがそこを検索します。正確な場所は思い出せませんが、プロジェクトのプロパティを見ると表示されるはずです。
絶対パスでも相対パスでも、#includeディレクティブの完全なパス参照を回避してください。代わりに、プロジェクト設定に他のプロジェクトのインクルードフォルダーの場所を追加します。必要な場合は、パス参照でサブフォルダーのみを使用してください。そうすれば、コードを更新せずに物事を簡単に移動できます。