Réponses:
Dans le projet dans lequel vous souhaitez #inclure le fichier d'en-tête d' un autre projet, vous devrez ajouter le chemin du fichier d'en-tête dans la section Inclure les répertoires supplémentaires dans la configuration du projet.
Pour accéder à la configuration du projet:
Pour inclure le fichier d'en-tête , écrivez simplement ce qui suit dans votre code:
#include "filename.h"
Notez que vous n'avez pas besoin de spécifier le chemin ici, car vous incluez déjà le répertoire dans les répertoires d'inclusion supplémentaires, afin que Visual Studio sache où le rechercher.
Si vous ne souhaitez pas ajouter chaque emplacement de fichier d'en-tête dans les paramètres du projet, vous pouvez simplement inclure un répertoire jusqu'à un certain point, puis #include par rapport à ce point:
// 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
Si vous utilisez des bibliothèques statiques (c.-à-d. Un fichier .lib), vous devrez également ajouter la bibliothèque à l'entrée de l'éditeur de liens, de sorte qu'au moment de la liaison, les symboles puissent être liés (sinon vous obtiendrez un symbole non résolu):
#include "proj2\include.h"
. Avoir plusieurs projets par solution semble très orienté vers les langages NET, car ils sont utilisés très différemment. Pourtant, trouver un excellent moyen de surmonter cela pour les projets C ++.
#include
n'a rien à voir avec les projets - il dit simplement au préprocesseur "mettre le contenu du fichier d'en-tête ici". Si vous lui donnez un chemin qui pointe vers l'emplacement correct (peut être un chemin relatif, comme ../votre_fichier.h), il sera inclus correctement.
Vous devrez cependant vous renseigner sur les bibliothèques (bibliothèques statiques / dynamiques) pour que ces projets se lient correctement - mais c'est une autre question.
Étant donné que les deux projets sont sous la même solution, il existe un moyen plus simple pour les fichiers d'inclusion et l'éditeur de liens, comme décrit dans https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp- projets? view = vs-2019 :
#include "../libProject/libHeader.h"
).Vous devez définir le chemin d'accès aux en-têtes dans les propriétés du projet afin que le compilateur y regarde lorsqu'il tente de trouver le (s) fichier (s) d'en-tête. Je ne me souviens pas de l'emplacement exact, mais regardez bien les propriétés du projet et vous devriez le voir.
Essayez d'éviter les références de chemin complètes dans la directive #include, qu'elles soient absolues ou relatives. Au lieu de cela, ajoutez l'emplacement du dossier d'inclusion de l'autre projet dans les paramètres de votre projet. Utilisez uniquement des sous-dossiers dans les références de chemin lorsque cela est nécessaire. De cette façon, il est plus facile de déplacer les choses sans avoir à mettre à jour votre code.
En développant la réponse de @ Benav, mon approche préférée est de:
$(SolutionDir)
aux répertoires d'inclusion supplémentairesVous pouvez maintenant inclure les en-têtes de vos projets référencés comme ceci:
#include "OtherProject/Header.h"
Remarques:
#include
s, mais elle définit les dépendances de construction correctes, ce que vous souhaitez probablement.