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.
PATH=%PATH%;$(ProjectDir)\some-framework\lib
ou en ajoutant un préfixe au chemin PATH=C:\some-framework\lib;%PATH%
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 .
Parcourir les propriétés du projet -> Chemins de référence
Puis ajouter un dossier avec les DLL
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é).
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)"