(win32) compatibilite

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 9 août 2007 à 08:36
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 9 août 2007 à 13:34
Bonjour

J'ai du code en win32 (trop long pour etre poste ici) qui fonctionne sur certaines machines et par sur d'autres
j'ai testé : win98SE, Win2000, Win2000Pro, WinXPSP1, WinXPSP2, WinXPPro, Vista

pour le moment, rien de bien concluant ne me permettant de trouver laquelle version posait problème.

1) Y a-t-il des API incompatibles d'une version à l'autre ?
si oui, où peux on trouver une liste avec les API de remplacement ?
-qu'en est il des "vieilles" methodes (new, delete, printf, memcpy, memcmp, malloc, memset, ...)

2) est-ce que ca pourrait venir d'un correctif non installé sur une des versions ?
---> comment determiner les sous versions ?

3) est-ce que ca pourrait venir du code ?
si oui, comment trouver l'endroit ?
débugger chaque machine ? ecrire un fichier de log ? ...?

Merci

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 août 2007 à 09:25
Chaque fonction API est documentée sur MSDN avec versions OS requises en bas de page.

ciao...
BruNews, MVP VC++
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
9 août 2007 à 10:31
je suis d'accord
j'avais deja remarqué cela

mais les fonctions de remplacement ne sont pas indiquées, dans le cas où l'API n'est plus supportée par l'un des successeurs
par exemple toutes les routines CRT (http://msdn2.microsoft.com/en-us/library/634ca0c2(VS.71).aspx)
qui ne semblent plus être supportees sur Vista

et ca n'explique toujours pas pourquoi par exemple, mon code fonctionne sur un poste 1 (XP) et pas sur un poste 2 (XP aussi)
sauf peut etre une différence de patch...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
9 août 2007 à 13:34
Salut,

Pour les CRT, c'est un peu sépciales. C'est pas des routines de Windows à proprement parler (Elles ne font pas partie de l'API Win32, qui propose d'ailleurs pas mal de fonction de de remplacement : swprintf, lstrcat...) Elles sont présentes sous Linux et à peu près tout ce qui permet de faire du C.

Sous Windows, ont peu les inclure dans l'executable (liaison statique), ou utiliser celles d'une dll (Liaison dynamique)

Pour avoir accès à certaines "vielle" méthode dont tu parles, il faut peut être que tu fasses les inclusions qui vont bien. La norme veut qu'en C++, ont mette un c devant les noms de ces headers. Mais en mettre ou pas en mettre ne doit pas changer grand chose sous VC d'en mettre ou de ne pas en mettre.

La référence des "vielles" fonctions.
0
Rejoignez-nous