web-dev-qa-db-fra.com

Ajout de mon DLL dans un projet Visual Studio en C ++

Je travaille sur un projet qui implique de créer une bibliothèque de liens dynamiques, donc je veux le tester dans une application console dans Visual Studio.

Le DLL est également fait dans Visual Studio, il n'a pas beaucoup, juste quelques fonctions dedans. Je ne suis pas sûr si je suis juste censé inclure l'en-tête des bibliothèques dans le inclure panneau répertoires dans Propriétés, ou faire autre chose

Beaucoup de gens disent que je suis censé ajouter son fichier .lib Correspondant dans le répertoire Library ou Reference, mais je ne suis pas sûr que VS génère un fichier .lib À côté de la DLL. J'utilise VS 2015.

11
Reaper9806

Je n'ai pas de VS devant moi en ce moment même, mais ce devraient être les étapes générales pour le configurer:

Properties->Linker->Input: your.lib
Properties->Linker->Additional Library Directories: ../your/bin
Properties->General->Compiler->Additional Include Directories: ../your/include

Pour créer votre application, les en-têtes d'API de la DLL doivent être dans l'inclusion pour la compilation, ce sont les fichiers LIB dans le bac pour la liaison. Une fois que vous avez votre EXE d'application, tout ce dont vous avez besoin est le DLL pour être dans le même dossier que votre EXE lors de son exécution).

Vous pouvez également ajouter le projet dll et le projet d'application dans une solution commune dans VS et ajouter (clic droit) la dépendance du projet de l'application à la dll. Cela garantit un ordre de construction correct, en supposant que vous allez construire la DLL du tout.

11
V-R

Vous pouvez aussi faire ce que j'ai fait.

  1. Vous pouvez créer un répertoire Libs à l'intérieur de votre répertoire Solution.
  2. Vous pouvez ensuite placer vos fichiers .DLL à l'intérieur du répertoire Libs ou un sous-répertoire à l'intérieur de Libs

    • Dans mon cas, j'ai ajouté l'intégralité du répertoire SFML-2.3.2, Qui comprenait le code source, les fichiers .lib et les fichiers .dll.
    • J'ai lié ce que je pouvais dans les propriétés du projet, mais j'ai utilisé les macros de Visual Studio pour remplir le nom du chemin d'accès au répertoire Solution. Juste au cas où je voudrais mettre cela en contrôle de version et travailler dessus à partir de plusieurs machines.
  3. J'ai ensuite ouvert la page de propriétés du projet.

  4. Dans la page de propriétés, je suis allé à Build Events -> Post-Build Event -> Command Line
  5. Dans la ligne de commande, vous pouvez ajouter une commande de copie qui copiera tous les fichiers nécessaires dans le même répertoire que l'exécutable qui en aura besoin.
    • Dans mon cas, j'ai utilisé: copy "$(SolutionDir)Libs\SFML-2.3.2\bin\*" "$(TargetDir)"
    • J'aurais pu écrire plusieurs commandes pour copier uniquement les fichiers individuels dont j'avais besoin, mais j'avais passé trois bonnes heures à essayer de faire fonctionner SFML sans l'installer.
3