2010-04-28 6 views
1

J'essaie d'utiliser dbghelp.dll. Si je le configure dans les propriétés VS2008 pour pointer vers la bibliothèque et le fichier d'en-tête corrects, et placez dbghelp.dll dans le même répertoire que l'exécutable, l'une des fonctions de la DLL échoue. Si je LoadLibrary la DLL, tout ce qui fonctionne fonctionne. J'ai regardé l'en-tête qui est inclus via l'option VS, et le droit est tiré dedans. La bonne lib est tirée dedans (vérifiée par l'option/verbose), et depends.exe montre la DLL correcte est chargée. Est-ce que quelqu'un sait pourquoi je ne peux pas faire fonctionner ça? Je vais probablement aller avec LoadLibrary, mais je suis vraiment perplexe sur celui-ci.Dll charge uniquement correctement via LoadLibrary?

EDIT: SymfromAddr échoue avec une "erreur 87", quelle qu'elle soit. Si je charge la DLL via LoadLibrary, cela fonctionne.

+1

Veuillez préciser ce qui se passe lorsque "l'une des fonctions de la DLL échoue". –

+0

Regardez dans l'Observateur d'événements, sous Système, il a généralement plus d'informations sur le problème (manifestes manquants et ainsi de suite). –

+1

Utilisez-vous la même version de DBGHELP.DLL dans les deux cas? Utilisez Process Explorer (www.sysinternals.com) pour voir à partir de quel dossier DBGHELP.DLL est chargé dans les deux situations. Si c'est le cas, vérifiez si vous vous référez à DBGHELP.DLL dans votre fichier manifeste (MYEXE.EXE.MANIFEST ou Manifest dans votre fichier de ressources) provoquant le chargement à partir du cache Windows côte à côte (WinSxS). – Patrick

Répondre

0

Avez-vous établi un lien avec Dbghelp.lib via les paramètres proj ou le commentaire #pragma (lib, "Dbghelp.lib")? Si vous faites le dll sera chargé lors de l'initialisation de l'application.

Questions connexes