begin process at 2012 05 29 04:51:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

fonction dans dll qui fait planter programme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction dans dll qui fait planter programme

vendredi 24 avril 2009 à 14:09:26 | fonction dans dll qui fait planter programme

pitch069

Bonjour,

je travail actuellement sur un code C++, sous dev c++. j'utilise une dll au travers d'un *.lib et dans mon programme principal je fais appel a des fonctions de ma dll.

Mon programme compile, me cree mon *.exe, cependant quand mon prgm arrive a une ligne de code ou je fais appel a une fonction presente dans la dll!, il plante et me met le message d'erreur windows :

"emulateur_AOA.exe a renconté un probleme et doit fermer, vous pouvez envoyer le rapport d'erreur a Microsoft ... "

Je n'arrive vraiment pas a comprendre ce qui se passe :!!

Si quelqu'un a une idée?

Merci d'avance
vendredi 24 avril 2009 à 19:14:45 | Re : fonction dans dll qui fait planter programme

ghuysmans99

Membre Club
Ta DLL est probablement buggée ...
Recopie les fonctions une par une dans un EXE et teste-les en Debug.
Tu verras la/les lignes où ça pose problème.
Signature.gif
lundi 27 avril 2009 à 16:53:05 | Re : fonction dans dll qui fait planter programme

pitch069

Du coup j'ai abandonner ces librairies et je vais chercher dynamiquement mes fonctions de ma dll avec les routines :
HINSTANCE load_lib = LoadLibrary("synchro.dll" ); ...


La maintenant ca marche super bien , enfin je croyais, je dois appeler la meme fonction plusieur fois, et la desque je l'appel plus de 10 fois, mon prgm se coupe et ca me met "monprgm.exe a rencontré un probleme et doit se fermer, vous pouver envoyer le rapport d'erreur a Microsoft ..."


Je ne sais pas pourquoi, mais j'ai fait plusieurs test, je ne sais pas si c'est une coincidence ou pas, mais si je l'appel 9 fois ca marche, 10 fois ca marche, mais des que j'essaye de l'appeler 11 fois ca beug !  
lundi 27 avril 2009 à 16:57:15 | Re : fonction dans dll qui fait planter programme

pitch069

(Je peut ajouter que ma dll contient des fonctions pour ecrire sur une carte relié sur le port PCI de mon ordi, peut etre que ca a un rapport avec mon beug )
lundi 27 avril 2009 à 19:18:42 | Re : fonction dans dll qui fait planter programme

ghuysmans99

Membre Club
Aucune idée du pourquoi, pose la question aux développeurs de la lib.
Je ne pense pas que quelqu'un puisse t'aider ici.
Signature.gif
mardi 28 avril 2009 à 09:15:09 | Re : fonction dans dll qui fait planter programme

pitch069

Je voudrais juste te montrer comment je fais appel a ma fonction dynamiquement, pour voir si le probleme viens peut etre de la :

ma fonction en question est (comme elle est déclaré dans le .h qui va avec la dll) : void WINAPI Program_Angle(int Card, int Channel, WORD Angle)

je peut vous montrer comment je fait pour appeler cette fonction :

// Déclarer un type de la fonction
typedef void (PROGRAM_ANGLE) (int, int, WORD);
// Déclarer les fonctions de la DLL
PROGRAM_ANGLE *Program_Angle;
// Récupérer l'adresse des fonctions en DLL
Program_Angle = (PROGRAM_ANGLE *) GetProcAddress(load_lib, "Program_Angle" );

//appel de ma fonction dans le programme

(*Program_Angle)(Card,(Channel-1),buffer[j]);

Peut etre je m'y prend mal pour appeler ma fonction??
mardi 28 avril 2009 à 10:08:26 | Re : fonction dans dll qui fait planter programme

Pistol_Pete

Salut
Si tu as accès au code de ta dll, alors poste le code de la fonction qui fait planté ton programme.
Sinon, contacter les personnes qui ont écrit cette lib est effectivement une bonne idée.
Tu peux aussi regarder dans la documentation de cette fonction pour savoir s'il y a certaine restriction.
A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

mardi 28 avril 2009 à 10:30:55 | Re : fonction dans dll qui fait planter programme

pitch069

Malheureusement je n'ais pas acces au code de dll. J'ai essayer de contacter l'entreprise qui fornit cette dll, mais le gars qui s'occupe de soft est comme par hasard en vacance :( !!

Le probleme ne doit pas venir de leur dll de toute facon, car j'ai un .exe qui a été réaliser avec cette dll et qui tourne. Puis mon beug quand j'appel ma fonction le fait pour n'importe quel fonction de la dll.

Pense tu que la facon dont je m'y prend pour appeler ma fonction dynamiquement est bonne?

(Je viens aussi de m'apercevoir quand je fais du pas a pas en debug, je plante bien sur ma ligne d'appel de ma fonction et windows me met l'erreur "une violation d'acces (erreur de segmentation) est apparue dans votre programme" )

mardi 28 avril 2009 à 18:54:35 | Re : fonction dans dll qui fait planter programme

ghuysmans99

Membre Club
C'est du STDCALL ? T'as le bon nombre de paramètres ?
Signature.gif
mercredi 29 avril 2009 à 09:01:30 | Re : fonction dans dll qui fait planter programme

pitch069

C'est bon probleme résolu, il fallai mettre le terme "WINAPI" lors de ma déclaration de fonction.

Merci pour votre aide!

1 2

Cette discussion est classée dans : fonction, programme, code, dll, planter


Répondre à ce message

Sujets en rapport avec ce message

Exportations de fonction EXE --> DLL [ par rclsilver02 ] Voila. Je suis sur un projet qui pourra gérer des modules. Chaque module se trouver dans une DLL et pourra utiliser des fonction du programme principa Ordre des fonction dans le .def d'une DLL [ par Mastersam ] Bonjour je voudrais savoir comment déterminer l'ordre que vont avoir les fonctions d'une dll dans le fichier .def.Car pour l'instant j'ai défini 3 fon Question sur les dll [ par flatou ] Salut a tous Je me pose une question : soit un programme qui a effectuer un hook sur une fonction de la dll kernel32.dll. Si mon deuxieme programme co Ecrire une Dll en C [ par sleep ] Bonjour, j'ai écrit un programme en C sous VC++ et je voudrais pouvoir exporter certaines de ses fonction dans une Dll, comment dois-je proceder ?Sur Fonction While multiple [ par oshin ] Salut tout le monde,J'ai un problème tout bête..Dans mon programme j'ai inclus une fonction "While(1)" donc infini.. le probleme c'est que lorsque le problème de passage de fonctions via dll [ par youppyy ] Bonjour, J'ai deux fonctions sont enregistrées dans une dll ecrite en langage C sur Dec-c++ : J'ai une fonction A qui renvoie une donnée et une fonct appeler une fonction c++ contenu dans dll avec de code c++ [ par avg ] j'ai une fonction qui est sous une class dans un dll déclarer comme ce ci : [code=cpp]C_MORPHO_User::C_MORPHO_User()[/code] j'ai appeler dll avec Load .dll [ par dhahrikhedher ] comment ajouté un dll[code=cpp][/code]avec visual studio stack overflow [ par ssana83 ] Bonjour, j'ai réalisé un programme de création d'un arbre donc j'ai utilisé une fonction récursive. J'ai essayé le programme ça marche sauf avec certa dll COM question!!! un truc qui me chiffone [ par darkpoulpo ] bonjour, imaginons que nous avons, une dll avec une fonction qui créer une objet COM et la renvoi au programme X pour être utilisé... imagine que plu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales