44 votes

Références DLL dans Visual C ++

Je suis un développeur C#, qui a décidé de poursuivre un projet C++. J'ai eu C++ de l'expérience, mais pas MSVC.

Ce que j'essaie de faire est d'intégrer une .dll à partir d'un projet open source dans mon projet. Le code est disponible et j'ai construit. J'ai l' .dll ainsi que l' .lib qui, comme je comprends qu'il est nécessaire pour les projets C++.

Maintenant, malheureusement, il n'est pas simple "Ajouter une Référence", abandonner ma dll dans un répertoire et l'ajouter à ma solution. J'ai édité les pages de propriétés du projet, le C/C++ Supplémentaires Incluent les Répertoires de l'option ainsi que l'ajout de l' .lib comme un autre éditeur de liens de dépendance. J'ai créé un répertoire pour les dll et lib à l'intérieur de ma solution de l'arbre.

Mon problème est que lorsque j'essaie d'inclure les fichiers d'en-tête à partir de la documentation, VS sortie crache des messages d'erreur. Maintenant je me rends compte que je suis en utilisant la dll/lib combo et que l' .h les fichiers ne sont pas présents dans ma solution alors, comment puis-je ajouter de la bonne comprend? Je suis en utilisant la bibliothèque QT qui est à travailler, mais comment j'ai ajouter l'autre en-tête / dll à partir de la bibliothèque open source m'échappe.

Quelqu'un peut-il svp me pointer dans la bonne direction.

78voto

Aaron Cook Points 753

Vous devez faire un certain nombre de choses à l'usage de la bibliothèque.

  1. Assurez-vous que vous avez les deux *.lib et l' *.dll à partir de la bibliothèque que vous souhaitez utiliser si vous n'avez pas l' *.lib ignorer #2

  2. Mettre une référence à l' *.lib dans le projet. Cliquez-droit sur le nom du projet dans l'Explorateur de solutions, puis sélectionnez Propriétés de Configuration->Linker->Input et de mettre le nom de la lib dans les autres Dépendances de la propriété.

  3. Vous devez vous assurer que VS pouvez trouver la lib que vous venez d'ajouter si vous devez vous rendre dans le menu Outils et sélectionnez Options..., puis dans le cadre de Projets et de Solutions de sélectionner les Répertoires de VC++. De l'intérieur ici, vous pouvez définir le répertoire qui contient votre nouveau lib en sélectionnant la "Bibliothèque de Fichiers' dans la case 'Afficher les Répertoires Pour:' zone de liste déroulante. Il suffit d'ajouter le chemin d'accès à votre fichier lib dans la liste des répertoires. Si vous n'avez pas la lib vous pouvez omettre cet, mais tout en votre ici, vous aurez aussi besoin de définir le répertoire qui contient les fichiers d'en-tête, ainsi que sous le "Inclure les Fichiers". Faire de la même façon que vous avez ajouté la lib.

Après avoir fait cela, vous devriez être bon d'aller et de pouvoir utiliser votre bibliothèque. Si vous n'avez pas un fichier lib vous pouvez toujours utiliser la dll par l'importation de vous-même. Lors de votre démarrage des applications, vous pouvez explicitement charger la dll en appelant la fonction LoadLibrary (voir: http://msdn.microsoft.com/en-us/library/ms684175(SV.85).aspx pour plus d'infos)

Cheers!

MODIFIER

N'oubliez pas d'utiliser #include < Foo.h > par opposition à l' #include "toto.h". L'ancien recherches le chemin de l'. Ce dernier utilise les fichiers de projet locaux.

2voto

Dani van der Meer Points 3981

Les répertoires include supplémentaires sont relatifs au répertoire du projet. Il s'agit normalement du répertoire où se trouve votre fichier de projet, * .vcproj. Je suppose que dans votre cas, vous devez simplement ajouter "include" à vos répertoires d'inclusion et de bibliothèque.

Si vous voulez être sûr du répertoire de votre projet, vous pouvez vérifier la valeur de la macro $ (ProjectDir). Pour cela, allez dans "C / C ++ -> Additional Include Directories", appuyez sur le bouton "..." et dans la boîte de dialogue contextuelle, appuyez sur "Macros >>".

1voto

imaginaryboy Points 4166

Vous mentionnez l'ajout du répertoire d'inclusion supplémentaire (C / C ++ | Général) et la dépendance de lib supplémentaire (Linker | Input), mais avez-vous également ajouté le répertoire de bibliothèque supplémentaire (Linker | General)?

L'inclusion d'un exemple de message d'erreur pourrait également aider les gens à répondre à la question, car il n'est même pas clair si l'erreur se produit lors de la compilation ou de la liaison.

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