Probleme en c pour api

Fermé
marion - 4 août 2009 à 20:39
 Shell - 6 août 2009 à 16:16
Bonjour,
j'ai fais un programme en c sous windows seven, j'utilise l'api . je compile tout fonctionne bien :) maintenant mon programme ne fonctionne pas sur XP. Je tente de compiler mon programme sur un pc XP est voici le message d'erreur

program received signal SIGSEV , Segmentation fault.
In ntdll!RtlEnumerateGenericTableLikeADirectory (); (C:\Documents and Settings
\marion\Desktop\progmarion\ntdll.dll

car j'ai mi ntdll.dll dans mon programme pour voir si cela changé quelque chose mais rien toujours la meme erreur, si je ne mais pas la dll dans mon programme sa m'indique une erreur dans C:\windows\system32\ntdll.dll


merci de m'aider bisous

5 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
5 août 2009 à 10:17
Ben cela signifie que tu appelles une fonction de ntdll.dll avec des mauvais paramètres ce qui provoque une erreur de segmentation. Il est probable que la version windows seven vérifie tes paramètres contrairement à celle d'xp.

Quoi qu'il en soit, avec un debugger il suffit de localiser à quelle ligne ton programme plante (a priori l'appel d'une fonction de cette dll) (call stack) et que tu vérifies la valeur des paramètres (watches) que tu lui passes.

Bonne chance
0
Avec le debuguer, je peut voir que le programme plante au niveau de l'appel a la fonction ShowWindow :( je ne sais pas du tout quoi faire :( je n'appel jamais des dll pourtant et je ne sais pas es paramètrer :( merci de m'aider
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
5 août 2009 à 14:25
Il n'y a rien a paramétrer, il faut juste appeler la fonction avec les bons paramètres. Je ne peux pas trop t'aider car malheureusement je ne suis pas spécialiste en API windows.

Sinon pour information tu peux peut-être utiliser QT plutôt que l'API windows, c'est plus simple à utiliser et plutôt mieux documenté. Et en plus le code est portable pour d'autres systèmes (linux, ...)

Bonne chance
0
> tu peux peut-être utiliser QT plutôt que l'API windows

C'est un gag ?
Qt n'est plus utilisé sur le marché français depuis des années !! (voir applels d'offres industrie et banquaires..)
0
merci beaucoup pour ton aide .
je viens de voir que le problème venait d'une autre dll quand je supprime la ligne posant problème :s . Le probleme est que je ne peut pas refaire tout mon code ( 3000 lignes ... ) bizar, peut etre un paramètre a inscrire dans les options de code blocks ?
Sinon je vais abandonner l'idée de le mettre sur xp :(
++
0

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

Posez votre question
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
6 août 2009 à 10:34
Bah là comme ça c'est un peu vague pour que je puisse t'aider. À mon avis tu as dû faire une erreur avant l'appel à l'une des fonction de windows, et le problème ne survient donc que bien après ton erreur. Ça peut être plein de choses, un tableau qui déborde, un paramètre invalide, ... Sans le code impossible de dire. Et même si je l'avais vu que je suis sous linux ça ne me permettrait pas de t'aider.

Bonne chance
0