50 votes

Quand utiliser les dépendances supplémentaires de Visual Studio ?

En C++, vous avez les fichiers d'en-tête (.h), les fichiers (.lib) et les fichiers (.dll).

Dans Visual Studio, vous fournissez l'emplacement pour rechercher ces fichiers à trois endroits différents :

  1. Configuration Properties => C/C++ => General => Additional Include directories. Ici, vous listez les répertoires "include" que vous voulez rechercher et rendre disponibles.

  2. Configuration Properties => Linker => General => Additional Library directories. Vous indiquez ici les répertoires "lib" que vous souhaitez voir recherchés et mis à disposition.

  3. Configuration Properties => Linker => Input => Dépendances supplémentaires. Ici vous spécifiez explicitement les fichiers .lib que vous voulez inclure.

Les questions sont les suivantes :

Q1 : Si vous avez spécifié le fichier d'en-tête en #1 et la librairie en #2, pourquoi/quand voudriez-vous spécifier quelque chose en #3 ?

Q2 : Je vois des gens qui incluent une version debug ou release spécifique d'une librairie dans le #3. Peut-on spécifier soit la version debug soit la version release d'une librairie en #3 et toujours construire en mode release ou debug ? Idéalement, quelle version de la librairie debug/ release devrait être fournie ici ?

38voto

Jerry Coffin Points 237758
  1. Configuration Properties => C/C++ => General => Additional Include directories. Ici, vous listez les répertoires "include" que vous voulez rechercher et rendre disponibles.

Ceci indique au compilateur où chercher les fichiers d'en-tête entre crochets. Cela affecte la façon dont le compilateur (ou le préprocesseur) fait son travail.

  1. Configuration Properties => Linker => General => Additional Library directories. Vous indiquez ici les répertoires "lib" que vous souhaitez voir recherchés et mis à disposition.

Cela indique à l'éditeur de liens où chercher les bibliothèques (c'est-à-dire dans quels répertoires chercher). Cela affecte la façon dont l'éditeur de liens (plutôt que le compilateur) fait son travail.

  1. Configuration Properties => Linker => Input => Dépendances supplémentaires. Ici vous spécifiez explicitement les fichiers .lib que vous voulez inclure.

Cela indique à l'éditeur de liens quelles sont les bibliothèques à rechercher dans ces répertoires. Cela affecte également la façon dont l'éditeur de liens fait son travail.

Q1 : Généralement, si vous utilisez 2, vous avez presque certainement besoin d'utiliser 3 également. 3 lui indique avec quelle bibliothèque se lier, et 2 lui indique où trouver cette bibliothèque. Bien sûr, il peut s'agir de plus d'une bibliothèque.

Q2 : Si une bibliothèque de débogage et une bibliothèque de version sont toutes deux fournies, vous généralement vous souhaitez utiliser la version de débogage dans une version de débogage et la version de publication dans la version de publication. Dans le coin supérieur gauche de la boîte de dialogue, vous sélectionnez la configuration que vous souhaitez modifier. En général, vous souhaitez spécifier des répertoires pour les versions de débogage et de publication, mais aussi des bibliothèques individuelles, une pour la version de débogage et une pour la version de publication.

4voto

Claude Points 21

Et pour souligner l'évidence, vous n'avez pas besoin d'ajouter les fichiers .h que vous utilisez dans un paramètre des propriétés de votre projet, car vous les incluez explicitement dans votre code source, qui recherche les en-têtes dans les chemins que vous avez déjà fournis.

2voto

Mark Points 21

De plus, dans les endroits ci-dessus, lorsque vous ajoutez un répertoire, regardez le bouton MACROS>>. Par exemple, vous pouvez vouloir utiliser des bibliothèques différentes pour 32bit/64bit/Release et Debug. Vous pouvez utiliser la MACRO ($ProjectDir) pour donner un lien relatif, et par exemple la MACRO ($DXSDK_DIR) pour vous assurer que vous obtenez les bonnes librairies pour votre développement directx.

J'ai donc ($DXSDK_DIR) \Lib\x86 et ($DXSDK_DIR) \Lib\x64 ce qui élimine également le problème lors du passage d'un système d'exploitation Windows 32 bits à 64 bits pour le développement.

2voto

JasDev Points 358

En ce qui concerne votre Q2...

Pour les bibliothèques tierces, je profite des macro-variables de la commande de construction de Visual Studio. $(Platform) y $(Configuration) entrez quelque chose comme ceci :

Y:\dev3\cpp\cryptopp\cryptopp561\$(Platform)\Output\$(Configuration);...

De cette façon, vous pouvez simplement saisir la même ligne exacte et Visual Studio substitue les variables de la macro et regarde dans l'un ou l'autre des cas suivants \cryptopp561\Win32\Output\Release\ o \cryptopp561\Win32\Output\Debug\ en fonction de la configuration que vous avez activée. Cela n'économise pas beaucoup de frappe, mais cela permet de garder les choses cohérentes et précises.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X