Dépendance DLL introuvable lors du débogage de Visual Studio 11 RC
Mon projet est un standalone application C++ qui utilise FMOD pour le son lu. J'ai déjà développé le même projet avec Visual Studio 2010 sans aucun problème, mais 2012 me donne la classique erreur: "Le programme ne peut pas démarrer car fmodex.dll est absent de votre ordinateur. Essayer de réinstaller le programme pour corriger ce problème." Le projet semble charger d'autres Dll(comme Direct3d les fichiers et d3d shader compilateur) l'amende juste.
Le problème se produit uniquement si vous essayez de déboguer ou d'exécuter le programme à partir de l'IDE, pas si je copie le fichier exécutable dans le répertoire approprié avec une DLL et de l'exécuter manuellement. Si je supprime toutes les références à FMOD du programme, le débogage et l'exécution de travaux d'amende. J'ai fait en sorte que j'ai corriger le répertoire de travail dans les paramètres de Projet (en plus il charge tous les autres fichiers très bien dans le même répertoire). A l'origine, je convertis le projet à partir de Visual Studio 2010, mais a essayé de créer un nouveau projet à partir de zéro avec pas de chance. J'ai aussi bricolé tous les possibles compilateur et l'éditeur de liens paramètres de travers, et google ne semble pas aider non plus.
Je suppose que le problème a quelque chose à voir avec le nouveau Metro style apps et c'est la façon de gérer avec des dépendances externes, mais j'ai aussi tourné "Metro Style de Support de l'Application". Je commence à penser que j'ai vraiment essayé tout ce que je peux et je n'ai aucune idée de ce à essayer ensuite. Les Directions pour obtenir plus d'informations de diagnostic serait bien apprécié! Merci!
Edit: version de Visual Studio, je suis à l'aide de Visual Studio Ultimate 2012 RC, la Version 11.0.50706.0 QRELRC juillet, 2012
OriginalL'auteur hhatinen | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Aller les propriétés du projet:
Et ajouter l'élément suivant:
Excellent! Qui a cloué le problème. Merci!!!!
Qui va vous permettre d'exécuter le programme dans le débogueur, mais il ne résout pas le problème que le programme n'est pas à la recherche de ses Dll correctement. c'est à dire Si quelqu'un d'autre s'exécute le programme dans le répertoire courant défini quelque part d'autre, ce sera un échec pour eux. (C'est courant, si vous exécutez le programme via une invite de commande, par exemple.)
J'étais sous l'impression que la DLL serait déployé/installé dans le répertoire de l'application basée sur le commentaire à ce sujet de travail en dehors de l'IDE. Cependant, vous avez raison, qui doit être traitée si elle n'a pas déjà été, et que cette solution est juste pour le débogage dans l'IDE.
Oui, la DLL sera déployé avec le programme. Le problème était que je n'étais pas en mesure de déboguer le programme à partir de l'IDE.
OriginalL'auteur Michael Burr
Mes sympathies, je vis dans l'enfer des DLL beaucoup ces derniers temps il me semble. Deux suggestions:
Vous pouvez conduire les IDE à partir de la ligne de commande avec
devenv
qui a un/useenv
commutateur.dumpbin /dependents [*.exe] [*.dll]
vous montrera DLL dépendances.dumpbin /dependents openssl.exe
F:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Common.props(63,3): The imported project "G:\build\CommonConfiguration\Neutral\sdk.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
(F est le disque sur lequel visual studio et G, où le projet est, il n'y a pas G:\build répertoire si..).OriginalL'auteur reechard
Il se peut que VS est en cours d'exécution de l'application avec un autre répertoire courant lorsque vous exécutez l'application à la main.
VS généralement définit le répertoire dans le dossier du projet, qui n'est généralement pas le même que le dossier où se construit binaires. Lorsque vous l'exécutez en main, vous êtes probablement courir à partir de la dernière, non pas l'ancien.
Si c'est le problème, alors le code de chargement fmodex.dll doit être en fonction de la dir être dans la DLL chemin de recherche, qui peut un gros risque de sécurité (recherche de "DLL " planter" ou de la DLL "pré-chargement") et qui est activement bloqué par certaines configurations Windows.
OriginalL'auteur Leo Davidson