Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1293 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Accéder à l'interface d'une Dll

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Accéder à l'interface d'une Dll

n°439399
Yoyo@
Posté le 25-06-2003 à 17:40:50  profilanswer
 

Salut,
 
j'aurais voulu savoir si il existait des utilitaires ou un moyen de voir les interfaces (membres et fonctions externes) des fichiers dll compilés par exemple avec VC++
 
Merci.

mood
Publicité
Posté le 25-06-2003 à 17:40:50  profilanswer
 

n°439509
hust
Posté le 25-06-2003 à 19:44:34  profilanswer
 

Il y a Depends.exe fourni avec Visual Studio.
Tu dois l'avoir avec VC++ 6.

n°439604
Ace17
Posté le 25-06-2003 à 22:29:25  profilanswer
 

Il me semble qu'une dll n'exporte que des fonctions
Sinon, tu prends n'importe quel désassembleur ca te donne le nom des fonctions. Par contre ca te donnera pas la liste des parametres, je ne vois d'ailleurs pas comment il serait possible d'y remonter. ( a la rigueur si on connait le compilo et qu'on a utilisé des noms décorés... )

n°439769
Yoyo@
Posté le 26-06-2003 à 08:27:31  profilanswer
 

HuSt : Merci, c'est exactemen ce que je cherchais!
 
Ace17 : Je n'ai jamais utilisé de désassembleur, mais je peux facilement imaginer l'intéret ! Par contre, je pensais pas que ca puisse me donner un moyen "facile" d'accéder à ma Dll)

n°439770
Ace17
Posté le 26-06-2003 à 08:31:21  profilanswer
 

L'intéret est pas si évident que ca. Un programme en assembleur un peu conséquent c'est déja pas facile a lire, mais le code généré par un désassembleur est carrément illisible car tous les identificateurs ont disparu, je te laisse imaginer le calvaire sur plusieurs dizaines de milliers de lignes de code... Disons que le désassembleur car peut servir si tu t'intéresses a un point précis du programme, ou si tu sais exactement ou chercher.

n°439774
Yoyo@
Posté le 26-06-2003 à 08:40:04  profilanswer
 

D'accord, c'est ce que je pensais, ca doit etre la jungle ;)
 
Merci pour tes réponses ;)
 
Le programme cité au dessus livré avec Visual Studio fait tres bien l'affaire, et il te montre de quelles Dll la tienne est dépendante !

n°439888
HelloWorld
Salut tout le monde!
Posté le 26-06-2003 à 10:26:37  profilanswer
 

Citation :

Par contre ca te donnera pas la liste des parametres, je ne vois d'ailleurs pas comment il serait possible d'y remonter


 
Avec la décorations des noms.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°440423
Ace17
Posté le 26-06-2003 à 15:31:23  profilanswer
 

HelloWorld a écrit :

Citation :

Par contre ca te donnera pas la liste des parametres, je ne vois d'ailleurs pas comment il serait possible d'y remonter


 
Avec la décorations des noms.


 
Voir plus haut  
" a la rigueur si on connait le compilo et qu'on a utilisé des noms décorés... "
 
 :D

n°440549
HelloWorld
Salut tout le monde!
Posté le 26-06-2003 à 17:13:08  profilanswer
 

En fait c'est pas lié au compilo mais au langage (=> classes C++). Il me semble que c'est plus ou moins normalisé.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°440608
Yoyo@
Posté le 26-06-2003 à 17:56:27  profilanswer
 

Les noms décorés, c'est ce que l'on met dans le fichier def?

mood
Publicité
Posté le 26-06-2003 à 17:56:27  profilanswer
 

n°440610
chrisbk
-
Posté le 26-06-2003 à 17:57:18  profilanswer
 

Yoyo@ a écrit :

Les noms décorés, c'est ce que l'on met dans le fichier def?


 
C'est les machins genre  
 
void tafonction@u455?545454
 

n°440682
Ace17
Posté le 26-06-2003 à 18:41:24  profilanswer
 

HelloWorld a écrit :

En fait c'est pas lié au compilo mais au langage (=> classes C++). Il me semble que c'est plus ou moins normalisé.


 
Ouais je crois que quand on veut remonter aux parametres ca passe mais quand on linke deux .obj provenant de deux compilos différents il y a des fois ou ils ne se comprennent pas...

n°440844
Yoyo@
Posté le 26-06-2003 à 21:32:40  profilanswer
 

Les amis, j'ai une question...
 
Est il possible, lors de l'appel d'un dll, de la debugger?
 
En fait, je cherche à connaitre par un moyen ou par un autre la valeur des variable dans le corps des fonctions de la Dll lorsque celle ci est exécutée...
 
Les cout et autres ne semblent pas marcher (aucun effet visible)

n°440862
Ace17
Posté le 26-06-2003 à 21:40:08  profilanswer
 

Ben tu peux lui faire générer un fichier de log, tout simplement. Ou alors a grand coups de MessageBox, c'est une autre technique.

n°440865
Ace17
Posté le 26-06-2003 à 21:41:25  profilanswer
 

HelloWorld a écrit :

Citation :

Par contre ca te donnera pas la liste des parametres, je ne vois d'ailleurs pas comment il serait possible d'y remonter


 
Avec la décorations des noms.


 
Maintenant que j'y pense, j'ai jamais vu de noms décorés dans une DLL. Ca existe?

n°440891
Yoyo@
Posté le 26-06-2003 à 21:59:58  profilanswer
 

Ace17 a écrit :

Ben tu peux lui faire générer un fichier de log, tout simplement. Ou alors a grand coups de MessageBox, c'est une autre technique.


 
Euh, pour le MessageBox, ca me semble rapé car je fais une Win32 DLL (donc, pas de MFC présente a priori???)
 
Et pour générer le log, je dois faire comment? utiliser les macros TRACE0?
 

n°440892
Yoyo@
Posté le 26-06-2003 à 22:00:45  profilanswer
 

Ace17 a écrit :


 
Maintenant que j'y pense, j'ai jamais vu de noms décorés dans une DLL. Ca existe?


 
A priori, ca a l'air d'exister :
 
http://www.laboratoire-microsoft.o [...] dev/dll/4/

n°441203
HelloWorld
Salut tout le monde!
Posté le 27-06-2003 à 09:31:53  profilanswer
 

Ben il me semble que dès que tu as une classe dans ta dll, ça te génère des noms décorés.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°441204
chrisbk
-
Posté le 27-06-2003 à 09:32:43  profilanswer
 

HelloWorld a écrit :

Ben il me semble que dès que tu as une classe dans ta dll, ça te génère des noms décorés.


 
Bah un compilo CPP va decorer n'importe quelle fonction sauf celle en extern "C"

n°441367
gatorette
Posté le 27-06-2003 à 10:29:43  profilanswer
 

Yoyo@ a écrit :

Est il possible, lors de l'appel d'un dll, de la debugger?


 
Si c'est simple, tu peut tout simplement créer une application qui va lancer ta DLL et éxecuter les fonctions que tu souhaite tester. Tu n'as plus alors qu'à débugger l'application.
Sinon, tu peut comme indiqué plus haut écrire dans un fichier de log, faire des Message Boxes (en utilisant l'API Windows standard, pas besoin d'utiliser les MFCs), ou encore utiliser la fonction OutputDebugString.
Enfin, tu peut faire un appel à la fonction DebugBreak qui va te stopper ton programme et te proposer de le débugger.


---------------
each day I don't die is cheating
n°441369
chrisbk
-
Posté le 27-06-2003 à 10:30:31  profilanswer
 

gatorette a écrit :


 
Si c'est simple, tu peut tout simplement créer une application qui va lancer ta DLL et éxecuter les fonctions que tu souhaite tester. Tu n'as plus alors qu'à débugger l'application.
Sinon, tu peut comme indiqué plus haut écrire dans un fichier de log, faire des Message Boxes (en utilisant l'API Windows standard, pas besoin d'utiliser les MFCs), ou encore utiliser la fonction OutputDebugString.
Enfin, tu peut faire un appel à la fonction DebugBreak qui va te stopper ton programme et te proposer de le débugger.


 
debutant :O
 

Code :
  1. _asm
  2. {
  3. int 3
  4. }


 
pour ceux qui en ont dans le slip :O [:ddr555]

n°441387
Yoyo@
Posté le 27-06-2003 à 10:41:26  profilanswer
 

gatorette a écrit :


 
Si c'est simple, tu peut tout simplement créer une application qui va lancer ta DLL et éxecuter les fonctions que tu souhaite tester. Tu n'as plus alors qu'à débugger l'application.
Sinon, tu peut comme indiqué plus haut écrire dans un fichier de log, faire des Message Boxes (en utilisant l'API Windows standard, pas besoin d'utiliser les MFCs), ou encore utiliser la fonction OutputDebugString.
Enfin, tu peut faire un appel à la fonction DebugBreak qui va te stopper ton programme et te proposer de le débugger.


 
Ah oui, exact, j'avais oublié cette fonction OutputDebugString! Elle me générera des messages que je devrai récupérer avec un programe externe !
 
Merci ;)
 
PS : par curiosité, quand tu parles des MessageBox Windows qui ne font pas partie de la MFC, tu parles des fonctions s'appelant MessageBox?

n°441437
gatorette
Posté le 27-06-2003 à 10:59:20  profilanswer
 

Yoyo@ a écrit :

PS : par curiosité, quand tu parles des MessageBox Windows qui ne font pas partie de la MFC, tu parles des fonctions s'appelant MessageBox?


 
Oui... c'est une fonction de l'API Windows. C'était en réponse à : "Euh, pour le MessageBox, ca me semble rapé car je fais une Win32 DLL (donc, pas de MFC présente a priori???)".


---------------
each day I don't die is cheating
n°441546
Yoyo@
Posté le 27-06-2003 à 11:36:30  profilanswer
 

gatorette a écrit :


 
Oui... c'est une fonction de l'API Windows. C'était en réponse à : "Euh, pour le MessageBox, ca me semble rapé car je fais une Win32 DLL (donc, pas de MFC présente a priori???)".


 
Oui, oui, c'est pour ca que je posais la question !  
 
Bon, bah c'est parfait ca ! Avec des petits char[] ou char*, ca va bien le faire ;) Merci !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Accéder à l'interface d'une Dll

 

Sujets relatifs
[Win32] Bug d'interface???[C++ | VS .NET] MFC, ca va pas en "MFC in shared DLL" mais static oui
Gros problème : DLL manquante..[C/C++] - Librairies DLL et ActiveX pour l'utilisation du RS232
Chargement de fonction d'une librairie DLLAcceder a la Registry ou a des variables d'environnment par DDE ?
niveau interface....incorporer des fichiers dans une DLL ?
[VB.NET] accéder a un annuaire LDAP ?Plugin et pure DLL windows
Plus de sujets relatifs à : [C++] Accéder à l'interface d'une Dll


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR