Question

Je continue à obtenir cette erreur: cannot convert parameter 1 from 'char' to 'LPCWSTR'

int main(int argc, char argv[])    
{

   // open port for I/O
   HANDLE h = CreateFile(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

   if(h == INVALID_HANDLE_VALUE) {
       PrintError("E012_Failed to open port");

Quelqu'un peut-il aider?

Était-ce utile?

La solution

Il doit être

int main(int argc, char* argv[]) 

HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

Autres conseils

Accédez aux propriétés de votre projet et sous Propriétés Configuration / Général, modifiez le jeu de caractères à « Non défini ». De cette façon, le compilateur ne pensera que vous voulez des caractères Unicode, qui sont sélectionnés par défaut:

text alt

Ceci est la fonction principale que Visual Studio crée par défaut:

int _tmain(int argc, _TCHAR* argv[])

Où _TCHAR est défini comme char ou wchar_t selon le cas _UNICODE est défini ou non. La même chose se produit avec les fonctions API. Je vous conseille de ne pas utiliser CreateFileA explicite. Changer votre CreateFile principal et de l'utilisation.

En fonction de réglage du compilateur pour CharacterSet , vous devrez peut-être effectuer une conversion multi-octets / widechar, ou changer le CharacterSet si vous ne faites pas ce qu'il est.

Pour la conversion avec MultiByteToWideChar, voir ce qui suit ...

http://www.codeguru.com/forum/showthread.php? t = 231165

Je suppose que vous compilez avec Unicode activé. Puis, avec char argv[], argv est un tableau de char, donc argv[1] est un char et CreateFile veut un const wchar_t* comme premier paramètre, pas char.

Cela dit, la définition de votre main est également brisée, il devrait avoir char* argv[]. Avec ce changement, vous pouvez appeler CreateFileA.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top