web-dev-qa-db-fra.com

Visual c ++: #include les fichiers d'autres projets dans la même solution

Je travaille sur un jeu utilisant Visual C++. J'ai des composants dans des projets distincts et ai défini les dépendances du projet. Comment puis-je inclure un fichier d'en-tête provenant d'un projet différent? Je ne sais pas comment utiliser les classes d'un projet dans un autre.

109
rlbond

Paramètres du compilateur

Dans le projet où vous souhaitez inclure le fichier d'en-tête depuis un autre projet , vous devez ajouter le chemin du fichier d'en-tête dans le Répertoires d'inclusion supplémentaires section dans la configuration du projet.

Pour accéder à la configuration du projet:

  1. Cliquez avec le bouton droit sur le projet et sélectionnez Propriétés.
  2. Sélectionnez Propriétés de configuration-> C/C++ -> Général.
  3. Définissez le chemin sous Répertoires d'inclusion supplémentaires.

Comment inclure

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 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

Paramétrage pour l'éditeur de liens

Si vous utilisez des bibliothèques statiques (fichier .lib, par exemple), vous devrez également ajouter la bibliothèque à l'entrée de l'éditeur de liens, afin qu'au moment de la liaison les symboles puissent être liés (sinon, vous obtiendrez un symbole non résolu):

  1. Cliquez avec le bouton droit sur le projet et sélectionnez Propriétés.
  2. Sélectionnez Propriétés de configuration-> Linker-> Input
  3. Entrez la bibliothèque sous Dépendances supplémentaires.
194

#include n'a rien à voir avec des projets - il indique simplement au préprocesseur "de placer le contenu du fichier d'en-tête ici". Si vous lui donnez un chemin qui pointe vers le bon emplacement (il peut s'agir d'un chemin relatif, comme ../votre_fichier.h), il sera inclus correctement.

Cependant, vous devrez vous renseigner sur les bibliothèques (bibliothèques statiques/dynamiques) pour pouvoir lier correctement ces projets - mais c'est une autre question.

4
Assaf Lavie

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 consulte lors de la recherche du ou des fichiers 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.

2
Rosstified

Comme les deux projets font partie de la même solution, il existe un moyen plus simple de regrouper les fichiers à inclure et l’éditeur de liens, comme décrit dans https://docs.Microsoft.com/en-us/cpp/build/adding-references-in- visual-cpp-projects? view = vs-2019 :

  1. L'inclusion peut être écrite dans un chemin relatif (par exemple, #include "../libProject/libHeader.h").
  2. Pour l'éditeur de liens, cliquez avec le bouton droit de la souris sur "Références", cliquez sur Ajouter une référence et choisissez l'autre projet.
0
Benav

Essayez d'éviter les références de chemin complet 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 si nécessaire. De cette façon, il est plus facile de déplacer des éléments sans avoir à mettre à jour votre code.

0
cdonner