visual c++: # Dołącz pliki z innych projektów w tym samym rozwiązaniu

Pracuję nad grą używając Visual C++. Mam kilka komponentów w oddzielnych projektach i ustawiłem zależności projektu. Jak mogę # dołączyć plik nagłówka z innego projektu? Nie mam pojęcia, jak korzystać z zajęć z jednego projektu w innym.

Author: Robino, 2009-03-02

6 answers

Ustawienia dla kompilatora

W projekcie, w którym chcesz # dołączyć plik nagłówka z innego projektu, musisz dodać ścieżkę pliku nagłówka do sekcji dodatkowe katalogi Dołącz w konfiguracji projektu.

Aby uzyskać dostęp do konfiguracji projektu:

  1. kliknij prawym przyciskiem myszy projekt i wybierz Właściwości.
  2. Wybierz Configuration Properties - > C / C++ - > General.
  3. Ustaw ścieżkę pod dodatkowym dołączeniem Katalogi.

Jak włączyć

Do Dołącz plik nagłówkowy , po prostu wpisz w swoim kodzie:

#include "filename.h"

Zauważ, że nie musisz tutaj określać ścieżki, ponieważ katalog zawiera już dodatkowe katalogi Include, więc 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 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

Ustawienie dla linkera

Jeśli używasz bibliotek statycznych (np.plik lib), będziesz również musiał dodać bibliotekę do wejścia linkera, aby w czasie łączenia symbole mogły być połączone z (w przeciwnym razie otrzymasz nierozwiązany symbol):

  1. kliknij prawym przyciskiem myszy projekt i wybierz Właściwości.
  2. Select Configuration Properties - >Linker- > Input
  3. wprowadź bibliotekę pod dodatkowymi zależnościami.
 204
Author: LeopardSkinPillBoxHat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-03 00:36:03

Ponieważ oba projekty są w ramach tego samego rozwiązania, istnieje prostszy sposób dla plików nagłówkowych i linkera, jak opisano w https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-projects?view=vs-2019:

  1. include może być zapisany w ścieżce względnej (np. #include "../libProject/libHeader.h").
  2. dla linkera, kliknij prawym przyciskiem myszy "referencje", kliknij Dodaj Referencje i wybierz inny projekt.
 7
Author: Benav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-18 01:02:14

#include nie ma nic wspólnego z projektami - po prostu mówi preprocesorowi "umieść zawartość pliku nagłówkowego tutaj". Jeśli nadasz mu ścieżkę, która wskazuje na właściwą lokalizację (może to być ścieżka względna, na przykład ../ your_file.h) zostanie poprawnie uwzględniony.

Będziesz jednak musiał dowiedzieć się o bibliotekach (biblioteki statyczne/dynamiczne), aby takie projekty prawidłowo się ze sobą łączyły - ale to już inne pytanie.

 4
Author: Assaf Lavie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 04:36:52

Musisz ustawić ścieżkę do nagłówków we właściwościach projektu, aby kompilator szukał tam plików nagłówkowych. Nie pamiętam dokładnej lokalizacji, ale spójrz na właściwości projektu i powinieneś go zobaczyć.

 2
Author: Rosstified,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 04:33:26

Staraj się unikać pełnych odniesień do ścieżki w dyrektywie #include, niezależnie od tego, czy są bezwzględne czy względne. Zamiast tego Dodaj lokalizację folderu Dołącz innego projektu w ustawieniach projektu. Używaj tylko podfolderów w referencjach ścieżek, gdy jest to konieczne. W ten sposób łatwiej jest przenosić rzeczy bez konieczności aktualizacji kodu.

 0
Author: cdonner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-02 04:49:32

Rozszerzając odpowiedź @ Benav, moim preferowanym podejściem jest:

  1. Dodaj katalog rozwiązania do ścieżki dołączania:
    • Kliknij prawym przyciskiem myszy projekt w Eksploratorze rozwiązań
    • select Properties
    • Wybierz wszystkie konfiguracje i wszystkie platformy z listy rozwijanej
    • Wybierz C / C++ > ogólne
    • dodaj $(SolutionDir) do dodatkowych katalogów Include
  2. Dodaj referencje do każdego projektu, którego chcesz użyć:
    • Kliknij prawym przyciskiem myszy na swoim Referencje projektu w Eksploratorze rozwiązań
    • Wybierz Dodaj referencję...
    • Wybierz projekt, do którego chcesz się odnieść

Teraz możesz dołączać nagłówki z odwołanych projektów w następujący sposób:

#include "OtherProject/Header.h"

Uwagi:

  • zakłada się, że plik rozwiązania jest przechowywany po jednym folderze z każdego projektu, co jest domyślną organizacją podczas tworzenia projektów w programie Visual Studio.
  • Możesz teraz dołączyć dowolny Plik z ścieżka względem folderu rozwiązania, co może nie być pożądane, ale dla prostoty podejścia jestem z tym ok.
  • Krok 2 nie jest konieczny dla #includes, ale ustawia poprawne zależności budowania, które prawdopodobnie chcesz.
 0
Author: yoyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-22 17:39:39