Visual C++ を使用してゲームに取り組んでいます。別のプロジェクトにいくつかのコンポーネントがあり、プロジェクトの依存関係を設定しました。別のプロジェクトのヘッダー ファイルを #include するにはどうすればよいですか? あるプロジェクトのクラスを別のプロジェクトで使用する方法がわかりません。
6 に答える
コンパイラの設定
別のプロジェクトのヘッダー ファイルを #include するプロジェクトでは、ヘッダー ファイルのパスをプロジェクト構成の [追加のインクルード ディレクトリ]セクションに追加する必要があります。
プロジェクト構成にアクセスするには:
- プロジェクトを右クリックし、[プロパティ] を選択します。
- [構成プロパティ] -> [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 ファイル) を使用している場合は、リンク時にシンボルをリンクできるように、ライブラリをリンカー入力に追加する必要もあります (そうしないと、未解決のシンボルが取得されます)。
- プロジェクトを右クリックし、[プロパティ] を選択します。
- [構成プロパティ] -> [リンカー] -> [入力] を選択します。
- [追加の依存関係] の下にライブラリを入力します。
両方のプロジェクトが同じソリューションの下にあるため、https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-で説明されているように、インクルード ファイルとリンカーのより簡単な方法があります。プロジェクト?view=vs-2019 :
- インクルードは相対パスで記述できます(例
#include "../libProject/libHeader.h"
)。 - リンカについては、[参照] を右クリックし、[参照の追加] をクリックして、他のプロジェクトを選択します。
#include
プロジェクトとは何の関係もありません-プリプロセッサに「ヘッダーファイルの内容をここに置く」ように指示するだけです。正しい場所を指すパス (../your_file.h のような相対パスでもかまいません) を指定すると、正しく含まれます。
ただし、そのようなプロジェクトを適切にリンクするには、ライブラリ (静的/動的ライブラリ) について学習する必要がありますが、それは別の問題です。
プロジェクトのプロパティでヘッダーへのパスを設定する必要があるため、ヘッダー ファイルを検索するときにコンパイラがそこを検索します。正確な場所は覚えていませんが、プロジェクトのプロパティを調べると、それが表示されるはずです。
#include ディレクティブでは、絶対パスか相対パスかに関係なく、完全なパス参照を避けるようにしてください。代わりに、他のプロジェクトのインクルード フォルダーの場所をプロジェクト設定に追加します。パス参照では、必要に応じてサブフォルダーのみを使用してください。そうすれば、コードを更新しなくても簡単に移動できます。