Debug dll

cs_jon26 Messages postés 11 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 mars 2004 - 26 févr. 2004 à 12:53
cs_jon26 Messages postés 11 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 mars 2004 - 27 févr. 2004 à 12:04
Après de très bon conseils de BruNews qui m'ont permis d'exporter enfin mes fonctions de ma dll vers une application VB, j'aimerais savoir autre chose pour être tout-à-fait à la pointe, niveau dll. Comment la debugger? Je vois qu'on peut la faire s'exécuter dans un exécutable apèrs la compilation, mais je ne sais pas à quoi ça sert et comment ça marche.
En gros, j'aimerais pouvoir afficher les résultats de mes variables avec un cout << par exemple, mais la petite fenêtre dos ne s'ouvre plus. Comment faire?

Et puis, est-il possible de faire en sorte en C++ qu'un vecteur vect(7) ait son premier élément à 1 et son dernier à 7 et pas son premier à 0 et son dernier à 6?

Merci beaucoup

Jonathan

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 févr. 2004 à 13:04
int vect[7], i;for(i 0; i < 7; i++) vect[i] i+1;

Le reste de la question, rien compris.
Dll exporte des fonctions qui retournent valeurs et/ou modifient params. C'est a l'exe qui se sert de la dll de faire les affichages, aucune difference que les funcs soient dans dll ou exe au niveau affichage. La dll n'entre pour rien dans l'affaire.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_jon26 Messages postés 11 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 mars 2004
26 févr. 2004 à 13:48
Pour la première partie de ta réponse, je voulais dire autre chose. Je veux 7 éléments dans un vecteur, indexés de 1 à 7 et pas de 0 à 6. Si je déclare vect[7], mon vecteur va de 0 à 6 , donc je dois déclarer vect[8] pour avoir l'index 7. Je dis ça parce que dans vb, je traite mes vacteurs de à partir de l'index 1 et pas l'index 0, et que là il est possible de déclarer 7 éléments indexés de 1 à 7. Mais c'est pas grave, je dis 8 éléments dans c, et c'est bon, mais je trouvais ça un peu moyen comme moyen.

Pour la deuxième partie, je sais que je dois appeler mes fonctions à partir d'un exe ou de vb. Mais ma dll compilée, j'appelle ma fonction depuis vb (une grosse fonction de la dll). Si il y à une erreur d'exécution (pas de compil), vb se ferme, et un message d'erreur s'affiche comme quoi j'essaie de lire ou écrire là où ce n'est pas permis en mémoire, puisqu'il n'a accès qu'au code compilé de ma dll. Alors ça veut dire que pour trouver mes erreurs dans le code de mes fonctions C++, il n'y à aucun moyen de faire du step by step par exemple, ou bien d'introduire un breakpoint là où le problème est causé, comme en vb?
Je dois repasser en revue ma fonction à la main. Je sais que C++ n'est pas interprété, mais comment débugger?

Jonathan
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
27 févr. 2004 à 09:23
Tu fais un exécutable de ton fichier VB

Projet --> Settings --> debug
tu mets l'emplacement de ton prog VB dans "executable for debug session"
(au besoin, dans category, additionnal dll, tu mets l'emplacement de ta dll)

et puis tu mets tes points d'arrets dans le code de ta dll et tu lances le debugger
0
cs_jon26 Messages postés 11 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 mars 2004
27 févr. 2004 à 12:01
Super, merci infiniment, ça marche. J'arrive à la debugger. Le problème que j'ai encore est que mon passage de paramètre ne rend pas les mêmes valeurs en c++. Je fais un appel depuis vb avec une fonction qui passe des long (a as long, b as long), il appelle bien ma fonction dans la dll qui a des entiers (int a, int b) en paramètre.
Je mets un point d'entrée au début de la fonction. Les valeurs de a et b sont totalement différentes. De (10,50) en vb par exemple, je reçoit (1244508, 1244504). Même en changeant mon 10 et mon 50, j'ai des valeurs proches de ça.

Qui sait?

Jonathan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jon26 Messages postés 11 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 1 mars 2004
27 févr. 2004 à 12:04
Tranquille les gards, j'ai trouvé. C'est simplement que je déclarait ma fonction en vb en ne mettant pas Byval devant les paramètres. Top terrible !!!

Jonathan
0
Rejoignez-nous