web-dev-qa-db-fra.com

Comment définir le chemin d'accès sur un fichier DLL dans Visual Studio?

J'ai développé une application qui dépend d'un fichier DLL. Lorsque je débogue mon application, l'application se plaindrait que:

"Cette application n'a pas pu démarrer car xxx.dll n'a pas été trouvé."

Je dois donc copier le fichier DLL) dans le même répertoire que mon fichier .vcproj.

Existe-t-il un moyen de faire en sorte que le projet recherche le fichier DLL) dans (de préférence) un chemin relatif ou (non préféré) un chemin absolu?

Concept similaire à la manière dont nous définissons l'inclusion et le chemin de la bibliothèque dans les paramètres du projet.

Je veux dire quand je debug mon application (frapper F5) l'erreur ci-dessus apparaît.

115
sivabudh
  1. Accéder aux propriétés du projet (Alt + F7)
  2. Sous le débogage, regardez à droite
  3. Il y a un domaine de l'environnement.
  4. Ajoutez votre chemin relatif ici (par rapport au dossier vcproj), c'est-à-dire ..\some-framework\lib en ajoutant PATH=%PATH%;$(ProjectDir)\some-framework\lib ou en ajoutant un préfixe au chemin PATH=C:\some-framework\lib;%PATH%
  5. Hit F5 (debug) à nouveau et cela devrait fonctionner.
170
sivabudh

Le chemin de recherche utilisé par le chargeur lorsque vous appelez LoadLibrary () peut être modifié à l'aide de la fonction SetDllDirectory () . Vous pouvez donc simplement appeler ceci et ajouter le chemin d'accès à votre dépendance avant de la charger.

Voir aussi Ordre de recherche des DLL .

8
i_am_jorf

Parcourir les propriétés du projet -> Chemins de référence

Puis ajouter un dossier avec les DLL

8
kravits88

Une autre possibilité serait de définir le Working Directory sous les options de débogage, le répertoire contenant cette DLL.

Edit: J'allais mentionner l'utilisation d'un fichier de commandes pour démarrer Visual Studio (et définir la variable PATH dans le fichier de commandes). Alors, un peu de recherche et de voir que cette même question exacte a été posée il n'y a pas longtemps dans ce post . La réponse suggère l'option du fichier de commandes ainsi que les paramètres du projet qui peuvent apparemment faire l'affaire (je ne l'ai pas testé).

4
Mark Wilkins

Dans les propriétés de votre projet (cliquez avec le bouton droit de la souris sur le projet, cliquez sur le bouton de la propriété) ▶ Propriétés de configuration ▶ Événements de construction ▶ Événements de post-génération ▶ Ligne de commande.

Modifiez et ajoutez une instruction à la ligne de commande. par exemple, copier botan.dll du chemin source vers l’emplacement où le programme est exécuté.

copy /Y "$(SolutionDir)ProjectDirs\x64\Botan\lib\botan.dll" "$(TargetDir)"

Project Properties

2
Joma