web-dev-qa-db-fra.com

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 de recherche de ces fichiers à trois endroits différents:

  1. Propriétés de configuration => C/C++ => Général => Répertoires Include supplémentaires. Ici, vous listez les répertoires "include" que vous souhaitez rechercher et mettre à disposition.

  2. Propriétés de configuration => Linker => Général => Répertoires de bibliothèque supplémentaires. Vous listez ici les répertoires "lib" que vous souhaitez rechercher et mettre à disposition.

  3. Propriétés de configuration => Linker => Input => Dépendances supplémentaires. Ici, vous spécifiez explicitement les fichiers .lib que vous souhaitez inclure.

Les questions sont:

Q1: Si vous avez spécifié le fichier d'en-tête dans # 1 et la bibliothèque dans # 2, pourquoi/quand voudriez-vous spécifier quoi que ce soit dans # 3?

Q2: Je vois des gens inclure une version de débogage ou de libération spécifique d'une bibliothèque dans # 3. Pouvez-vous spécifier le débogage ou la version finale d'une lib dans # 3 et continuer à construire en mode release ou debug? Idéalement, quelle version du débogage/version de la bibliothèque doit être fournie ici?

48
user205834
  1. Propriétés de configuration => C/C++ => Général => Répertoires Include supplémentaires. Ici, vous listez les répertoires "include" que vous souhaitez rechercher et mettre à disposition.

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

  1. Propriétés de configuration => Linker => Général => Répertoires de bibliothèque supplémentaires. Vous listez ici les répertoires "lib" que vous souhaitez rechercher et mettre à disposition.

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

  1. Propriétés de configuration => Linker => Input => Dépendances supplémentaires. Ici, vous spécifiez explicitement les fichiers .lib que vous souhaitez inclure.

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

Q1: En général, si vous utilisez 2, vous devez presque certainement également utiliser 3. 3 lui indique à quelle bibliothèque se connecter, et 2 lui indique où trouver cette bibliothèque. Bien sûr, il peut également s'agir de plusieurs bibliothèques.

Q2: Si une bibliothèque de débogage et de publication est fournie, vous généralement souhaitez utiliser la version de débogage dans une version de débogage et la version de version 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 règle générale, vous souhaiterez spécifier des répertoires pour le débogage et la publication, mais spécifiez des bibliothèques individuelles, une pour le débogage et une pour la publication.

38
Jerry Coffin

Et juste pour souligner l'évidence, vous n'avez pas besoin d'ajouter les fichiers .h que vous utilisez dans un paramètre de 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à à condition de.

4
Claude

Concernant votre Q2 ...

Pour les bibliothèques tierces, je profite des variables de macro de la commande de création Visual Studio $(Platform) et $(Configuration) saisissez quelque chose comme ceci:

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

De cette façon, vous pouvez simplement entrer la même ligne exacte et Visual Studio substituer les variables de macro et regarder dans \cryptopp561\Win32\Output\Release\ Ou \cryptopp561\Win32\Output\Debug\ Selon la configuration que vous avez active. Cela n'économise pas beaucoup de frappe, mais il aide à garder les choses cohérentes et précises.

2
JasDev

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

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

2
Mark