Besoin d'aide pour résoudre une erreur C2664 [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
8 mai 2007
-
Messages postés
6
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
8 mai 2007
-
Bonjour, je suis nouveau ici et débutant en C++ (je suis étudiant en IUT Génie Electrique et Informatique Industrielle et nous n'avons appris que les bases du C). Je suis en train de faire un programme utilisant la liaison série pour recevoir des données et lorsque je compil, je me retrouve avec une erreur C2664 que je n'arrive pas résoudre, donc je solicite votre aide.
Voici le problème se trouve au niveau de ma fonction  de lecture du port (et la même au niveau de l'envoi sur le port) :

//   Fonction de lecture du port
BOOL Readport (void *buffer, int nbytestoread, int *nbytesread)
{
 return ReadFile (g_hcom, buffer, nbytestoread, *nbytesread, NULL);
}

//   Fonction d ecriture sur le port
BOOL Writeport (void *buffer, int nbytestowrite, int *nbyteswritten)
{
 return WriteFile (g_hcom, buffer, nbytestowrite, *nbyteswritten, NULL);
}

Et lorsque que je compil, j'ai le message suivant :
error C2664 : 'ReadFile' : cannot convert parameter 4 from 'int' to 'unsigned long*' , conversion from integral type to pointer types requires reinterpret_cast , c-style cast or function style-cast
La même erreur se produit pour le WriteFile.
J'ai essayé de mettre (unsigned long*) NULL ou de passer par un pointeur mais cela ne change rien???    Je ne sais pas si cela peut vous aidez mais je programme sous microsoft visual c++ 6.0.
Merci d'avance pour votre aide.

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
WriteFile (g_hcom, buffer, nbytestowrite, (DWORD*) nbyteswritten, NULL);

ciao...
BruNews, MVP VC++
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Salut,
Ton erreur vient du fait que tu passes la 'valeur' de la variable pointé par nbytesread, il faut lever l'opérateur '*' pour passer le pointeur lui-même.
Et comme Brunews le montre, puisque il faut un unsigned long, le cast s'impose.
Messages postés
6
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
8 mai 2007

Merci à BruNews et yann_lo_san pour vos réponses et vos explications. J'ai en effet remplacer cet erreur dans mon programme et cela fonctionne bien. Encore merci à vous deux.