none
Pourquoi autoexp ne trouve pas mes dll? RRS feed

  • Question

  • Bonjour,

    j'essaie de faire un expression evaluator en modifiant le fichier autoexp.dat. J'ai suivi plusieurs tutoriels qui marchaient, quand 'tout a coup' Visual Studio a decide de ne plus trouver mes dll, sans que j'ai fait aucune modification.

    Explications:

    si je mets dans autoexpand.dat:

    [AutoExpand]
    MyClass= hello world

    Lors du debogage, hello world s'affiche bien. Par contre, si je mets MyClass=$ADDIN(MyVisualizer.dll, DebugTest), avec MyVisualizer.dll dans le DevEnvDir et DebugTest qui n'a pas son nom décoré dans le dll (j'ai verifie avec dumpbin), le debogueur n'arrive pas a appliquer le bon traitement (affiche {...} )

    J'ai refait un essai avec les sources du tutoriel de EEAddin fourni par microsoft, et cela me donne le meme resultat! J'en deduis que VisualStudio ne trouve pas les fichiers dll... J'ai essaye de rajouter le dossier DevEnvDir (Microsoft Visual Studio 9.0\Common7\IDE\) dans le path, mais rien ne change.

    Je ne comprend vraiment pas, d'autant qu'il y a 2 jours tout marchait parfaitement! Quelqu'un saurait-il d'ou vient le probleme?

    Merci d'avance

    Maxime

     

    jeudi 20 mai 2010 15:45

Réponses

  • Bonjour,

    toujours pas de solution pour faire marcher EEAddin, mais j'ai reussi a faire marcher un autre add-in. Voici ce que j'ai deduit de differents essais:

    - dans autoexp.dat, pas besoin de mettre le chemin complet de la dll si celle-ci est dans le dossier IDE

    - dans autoexp.dat, ne pas mettre d'espaces avant le nom de la fonction appelee: Image=$ADDIN(MyVisualizer.dll,DebugTest) marche mais  Image=$ADDIN(MyVisualizer.dll, DebugTest) ne marche pas

    - compiler la dll en Win32, une dll x64 n'est pas detectee.

    lundi 31 mai 2010 20:02

Toutes les réponses

  • Bonjour,

    Quelle version de Visual Studio utilisez vous ?

    Cordialement


    Gilles TOURREAU - MVP C# - Architecte .NET/Consultant/Formateur
    jeudi 20 mai 2010 20:27
    Modérateur
  • Bonjour,

    J'utilise Visual Studio 2008 Pro, v 9.0.30729.1 SP. (sous windows 7 64bits).

    jeudi 20 mai 2010 20:49
  • Bonjour,

    j'ai essaye de faire la manipullation de EEAddin (http://msdn.microsoft.com/fr-fr/library/8fwk67y3%28VS.90%29.aspx) sur un autre ordinateur (Visual Studio 2008 pro, windows XP 32bits), et cela ne marche pas non plus. Le probleme vient donc de moi et pas de la configuration de Visual.

    Voici ce que je fais:

    - je compile le projet EEAddin (mode release, Win32)

    - je copie colle eeaddin.dll dans Microsoft Visual Studio 9.0\Common7\IDE

    - j'ajoute les lignes suivantes dans Microsoft Visual Studio 9.0\Common7\Packages\Debugger\autoexp.dat, dans la section [AutoExpand]:

       _SYSTEMTIME=$ADDIN(eeaddin.dll,AddIn_SystemTime)
       _FILETIME=$ADDIN(eeaddin.dll,AddIn_FileTime)

    (j'ai verifie les noms des fonctions dans la dll avec le commande dumpbin -exports eeaddin.dll)

    - je cree un projet app MFC, j`y mets les lignes suivantes:

    SYSTEMTIME *s = new SYSTEMTIME();
    FILETIME *f = new FILETIME();
    GetSystemTime(s);
    SystemTimeToFileTime(s,f);

    - je mets un point d`arret sur cette derniere ligne, et je lance le debuggin

    - quand je survole s, cela affiche: 0x0034c600 {???}, et quelque chose de similaire pour f.

    Donc soit la dll n'est pas trouvee, soit la fonction n'est pas trouvee, soit il y a une exception dans l'execution de la dll.

    Dans tous les cas, je ne vois vraiment pas pourquoi cela ne marche pas, etant donne que j'ai scrupuleusement suivi le tutoriel....

    J'ai vraiment besoin de faire marcher cela, j'espere que vous pourrez m'y aider.

    cordialement, Maxime (desole pour l'absence des accents, je suis sur un clavier qwerty)

    vendredi 21 mai 2010 15:33
  • Bonjour,

    J’ai reproduit cet exemple et pour moi les valeurs sont récupérées. C’est vrai que si on survole le pointeur s* on voit { ???}, mais si on regarde les membres de l’objet après l’appel des fonctions GetSystemTime et SystemTimeToFileTime, on voit qu’elles ont des valeurs. Dans votre reproduction de cet exemple, vous ne pouvez voir les valeurs des propriétés ?

     

    Cordialement,

    Alex

     

     

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    mardi 25 mai 2010 09:08
  • Bonjour,

    je peux effectivement voir les valeurs des proprietes, mais cela n'est pas le resultat de l'exemple. Sans rien faire (je veux dire sans utiliser la dll de EEAddin), le debugger arrive de base a voir les valeurs des proprietes. Par exemple, j'ai pour s, wYear=2010, wMonth=5, wDayOfWeek=2, etc.... et pour f, j'ai dwlowDateTime=3083654896, dwhighDateTime=30080024

    Mais, si j'ai bien compris ce que fait EEAddin, en ajoutant dans autoexp (avec eeaddin.dll dans le dir IDE)
    _SYSTEMTIME=$ADDIN(eeaddin.dll,AddIn_SystemTime)
    _FILETIME=$ADDIN(eeaddin.dll,AddIn_FileTime)

    , on devrait avoir l'inverse, c'est a dire pour s des valeurs pour les dwlowDateTime et dwhighDateTime correspondants et pour f wYear, wMonth etc... (sauf erreur de ma part) Or ce n'est pas le cas. De plus j'ai lu quelque part sur le msdn (US) que lorsque {???} s'affiche, cela signifie qu'il y a un probleme.

    J'espere avoir ete comprehensible

    Cordialement,

    Maxime

    mardi 25 mai 2010 14:53
  •  

    Bonjour,

     

    Apparemment, il faut utiliser le chemin complet pour le dll dans le fichier autoexp.dat. Les points de question « ??? » signifient que la dll n’est pas chargée ou qu’une exception est produite dans le dll. Dans votre cas, je crois que la dll n’était jamais utilisée. Avec le chemin complet, j’ai créé une dll Release Win32 qui bloque l’IDE. La dll x64 ne marche pas. Je vais continuer à investiguer ce problème, pour le moment je n’ai aucune solution.

     

    En cherchant des solutions, j’ai trouvé quelques articles similaires, mais sans utiliser les dll. Peut-être elles vous seront utiles :

    http://msdn.microsoft.com/fr-fr/library/aa730838(v=VS.80).aspx

    http://through-the-interface.typepad.com/through_the_interface/2006/07/advanced_visual.html

     

    Si vous trouvez quelque chose avant moi, je vous prie d’écrire ici la solution, pour permettre aux autres d’en bénéficier aussi.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework

     

     

    mercredi 26 mai 2010 10:01
  • Bonjour,

    j'ai vraiment besoin d'utiliser une dll. Je vais donc continuer a chercher une solution, et je vous tiendrai au courant s'il y a avancement.

    Merci pour vortre aide.

    Cordialement,

    Maxime

    mercredi 26 mai 2010 14:53
  • Bonjour,

    toujours pas de solution pour faire marcher EEAddin, mais j'ai reussi a faire marcher un autre add-in. Voici ce que j'ai deduit de differents essais:

    - dans autoexp.dat, pas besoin de mettre le chemin complet de la dll si celle-ci est dans le dossier IDE

    - dans autoexp.dat, ne pas mettre d'espaces avant le nom de la fonction appelee: Image=$ADDIN(MyVisualizer.dll,DebugTest) marche mais  Image=$ADDIN(MyVisualizer.dll, DebugTest) ne marche pas

    - compiler la dll en Win32, une dll x64 n'est pas detectee.

    lundi 31 mai 2010 20:02
  • Bonjour,

     

    Merci pour le suivi de ce thread. Je n’avais pas remarqué les espaces dans le nom de la fonction.

     

    Cordialement,

    Alex

    __________________________________________________________________________________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    mardi 1 juin 2010 14:41