J'ai une application C++ intégrée dans Visual Studio (2008) et liée à une DLL Boost. Lors du débogage, il semble que j'ai besoin de copier la DLL Boost dans le dossier de débogage afin que l'exe que je cours dans l'EDI puisse s'y connecter. Je pourrais utiliser une étape de post-construction pour copier la DLL, mais je me demandais s'il existe un paramètre dans Visual Studio qui peut lui donner un chemin de recherche supplémentaire pour les DLL lors du débogage?Évitez de copier une DLL tierce dans le dossier de débogage
Répondre
Il y a une légère mauvaise perception ici. Visual Studio lui-même ne contrôle pas directement le chargement des DLL dans une application pendant que vous déboguez. Le chargement des DLL est directement contrôlé par le système d'exploitation. Le système d'exploitation recherche un ensemble de répertoires intéressants pour les DLL lorsqu'une charge est demandée.
La manière principale dont VS influence les DLL chargées est due à leur copie dans le répertoire de sortie de construction. C'est généralement le répertoire dans lequel l'application est exécutée et par conséquent est l'un des chemins que le système d'exploitation va rechercher les DLL nécessaires.
Quels répertoires le système d'exploitation recherche est contrôlé par quelques éléments. Le plus facile à modifier est la variable d'environnement (LIBPATH je crois). En mode Debug, vous pouvez modifier cette variable d'environnement pour qu'elle pointe vers votre autre répertoire et charger la DLL à partir de là.
Toutefois, vous ne pouvez rien définir directement dans Visual Studio.
Il semble que vous pouvez modifier l'environnement au moment du débogage en définissant l'environnement sur PATH = $ (PATH);
J'ai marqué cela comme "la" réponse parce que c'était la réponse la plus utile. Malheureusement le bit qui dit "il n'y a rien que vous pouvez définir dans Visual Studio" n'est pas correct (à mon avis) - voir mon commentaire sous la question.Cependant, merci pour le conseil. – Permaquid
Il n'y a pas beaucoup d'options sur Windows pour les DLL qui sont implicitement liées à l'EXE. Short de stocker la DLL dans le même dossier que le fichier EXE, vous pouvez le stocker dans un répertoire répertorié dans la variable d'environnement PATH. Seul c: \ windows \ system32 est garanti être répertorié, vous ne pouvez pas utiliser raisonnablement ce dossier. Un programme d'installation qui change l'environnement du système fonctionnerait, mais ce n'est pas raisonnable.
La seule option réelle consiste à stocker la DLL dans le cache côte à côte WinSxS. Vous devrez écrire un manifeste pour que Windows puisse trouver la DLL. Et vous devrez écrire un programme d'installation pour mettre la DLL dans WinSxS. Étant donné la qualité de la documentation, vous devez vraiment, vraiment vouloir le faire.
Si cela n'est qu'une considération pour le débogage, alors peut-être que ce n'est pas vraiment un gros problème de changer le PATH sur votre machine dev. Utilisez le Panneau de configuration, l'applet Système.
Vous pouvez étendre PATH dans Visual Studio en définissant la variable d'environnement. Il y a une bonne explication ici: How do I set a path in visual studio?
- 1. DLL tierce dans l'application Silverlight
- 2. Habillage d'une DLL tierce
- 3. utilisant une DLL tierce dans une application web d'entreprise?
- 4. qmake: Comment copier .dll/.so dans le répertoire de sortie?
- 5. Utilisation d'une DLL COM tierce dans ASP.NET
- 6. copier un dossier dans
- 7. Comment tracer dans une DLL tierce avec Visual Studio?
- 8. dll de débogage dans l'application web vb.net
- 9. Utilisation de CruiseControl pour copier le dossier SVN de la tête dans un dossier Release
- 10. Comment changer la langue d'une DLL tierce?
- 11. DLL dupliquée dans le dossier "Dépendances détectées"
- 12. Copier un dossier de pluginBasedir dans le projet cible
- 13. SWF ne fonctionne que dans le dossier de débogage
- 14. C++ - Lier à une DLL tierce - violation d'accès intermittent
- 15. TFS aucun dossier de version dans le dossier de construction
- 16. dll copié dans le chemin de sortie du mauvais dossier
- 17. Problème JNI: appeler en Java une DLL qui utilise une DLL tierce
- 18. Comment copier un dossier dans un dossier système dans Cocoa
- 19. Débogage InProc COM Dll
- 20. VS2008.NET: Copier les dépendances d'un projet référencé dans le dossier bin du projet principal
- 21. DLL de débogage appelée avec CeRapiInvoke
- 22. Copier le dossier de manière récursive, excluant certains dossiers
- 23. visual studio copy dll réfrences au dossier de sortie
- 24. Copier le fichier dans le répertoire de l'application
- 25. Placer des DLL dans le GAC lors de la construction de la solution dans le débogage
- 26. Comment copier le dossier QT dans un autre dossier sans le réinstaller?
- 27. Évitez de boxer dans DbParameter.Value?
- 28. Comment copier un dossier dans VC++?
- 29. Copier un fichier de ressources dans un dossier?
- 30. Copier les fichiers dans le dossier d'un répertoire en python
http://stackoverflow.com/questions/1776060/how-to-make-visual-studio-copy-dll-to-output-directory –
La question fait référence se rapporte à l'aide d'un étape post-construction, que je souhaite éviter. – Permaquid
JaredPar a fourni l'indice pour contrôler l'environnement, plutôt que de rechercher un emplacement de recherche de bibliothèque Visual Studio. Il se trouve qu'il existe un paramètre Visual Studio qui fournit exactement ce que je voulais, en ajoutant (apparemment) un autre chemin à la variable d'environnement PATH: Configuration Properties> Debugging | Environnement. C'est par projet, et vous pouvez utiliser des variables d'environnement. La seule pièce manquante est la documentation qui décrit exactement comment l'environnement de débogage que je veux ajouter est fusionné dans l'existant. – Permaquid