Pracuję nad grą w języku Visual C ++. Mam kilka komponentów w oddzielnych projektach i ustawiłem zależności projektu. Jak # Uwzględnić plik nagłówkowy z innego projektu? Nie mam pojęcia, jak używać zajęć z jednego projektu w innym.
Pracuję nad grą w języku Visual C ++. Mam kilka komponentów w oddzielnych projektach i ustawiłem zależności projektu. Jak # Uwzględnić plik nagłówkowy z innego projektu? Nie mam pojęcia, jak używać zajęć z jednego projektu w innym.
W projekcie, w którym chcesz # uwzględnić plik nagłówkowy z innego projektu, musisz dodać ścieżkę pliku nagłówkowego do dodatkowych katalogów dołączania w konfiguracji projektu.
Aby uzyskać dostęp do konfiguracji projektu:
Aby dołączyć plik nagłówkowy , po prostu napisz w swoim kodzie:
#include "filename.h"
Zwróć uwagę, że nie musisz tutaj określać ścieżki, ponieważ katalog został już uwzględniony w dodatkowych katalogach dołączania, więc program Visual Studio będzie wiedział, gdzie go szukać.
Jeśli nie chcesz dodawać każdej lokalizacji pliku nagłówkowego w ustawieniach projektu, możesz po prostu dołączyć katalog do jednego punktu, a następnie #include względem tego punktu:
// 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
Jeśli używasz bibliotek statycznych (np. Plik .lib), będziesz musiał również dodać bibliotekę do wejścia konsolidatora, aby w czasie łączenia symbole mogły być połączone (w przeciwnym razie otrzymasz nierozwiązany symbol):
#include "proj2\include.h"
. Posiadanie wielu projektów na rozwiązanie wydaje się być bardzo ukierunkowane na języki NET, ponieważ są one używane w bardzo różny sposób. Jednak aby znaleźć świetny sposób na przezwyciężenie tego w projektach C ++.#include
nie ma nic wspólnego z projektami - po prostu mówi preprocesorowi „umieść tutaj zawartość pliku nagłówkowego”. Jeśli podasz mu ścieżkę wskazującą na poprawną lokalizację (może to być ścieżka względna, np. ../Your_file.h), zostanie uwzględniona poprawnie.Będziesz jednak musiał poznać biblioteki (biblioteki statyczne / dynamiczne), aby takie projekty łączyły się prawidłowo - ale to już inna kwestia.
źródło
Ponieważ oba projekty są objęte tym samym rozwiązaniem, istnieje prostszy sposób na pliki dołączania i konsolidator, jak opisano w https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp- projekty? view = vs-2019 :
#include "../libProject/libHeader.h"
.).źródło
Musisz ustawić ścieżkę do nagłówków we właściwościach projektu, aby kompilator szukał tam, próbując znaleźć pliki nagłówkowe. Nie pamiętam dokładnej lokalizacji, ale spójrz na właściwości projektu i powinieneś to zobaczyć.
źródło
Staraj się unikać pełnych odwołań do ścieżek w dyrektywie #include, niezależnie od tego, czy są one bezwzględne, czy względne. Zamiast tego dodaj lokalizację folderu dołączanego innego projektu w ustawieniach projektu. W razie potrzeby używaj tylko podfolderów w odniesieniach do ścieżek. W ten sposób łatwiej jest przenosić rzeczy bez konieczności aktualizowania kodu.
źródło
Rozwijając odpowiedź @ Benav, moim preferowanym podejściem jest:
$(SolutionDir)
do dodatkowych katalogów dołączaniaTeraz możesz dołączyć nagłówki z projektów, do których się odwołujesz, na przykład:
Uwagi:
#include
s, ale ustawia prawidłowe zależności kompilacji, które prawdopodobnie chcesz.źródło