Je continue à avoir 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?
CA devrait etre
int main(int argc, char* argv[])
Et
HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
Accédez aux propriétés de votre projet et sous Propriétés de configuration/Général, modifiez le jeu de caractères en "Non défini". De cette façon, le compilateur ne supposera pas que vous vouliez des caractères Unicode, qui sont sélectionnés par défaut:
C'est la fonction principale que Visual Studio crée par défaut:
int _tmain(int argc, _TCHAR* argv[])
Où _TCHAR est défini comme étant char ou wchar_t selon que _UNICODE est défini ou non. La même chose se passe avec les fonctions de l'API. Je vous déconseille d'utiliser explicitement CreateFileA. Changez votre main et utilisez CreateFile.
Selon le paramétrage de votre compilateur pour CharacterSet, vous devrez peut-être effectuer une conversion multi-octets/widechar ou modifier le CharacterSet si vous ne vous en souciez pas.
Pour convertir avec MultiByteToWideChar, voir ce qui suit ...
Je suppose que vous compilez avec Unicode activé. Alors avec char argv[]
, argv
est un tableau char
, donc argv[1]
est un char
, et CreateFile
veut un const wchar_t*
comme premier paramètre, pas un char
.
Cela dit, votre définition main
est également brisée, elle devrait avoir char* argv[]
. Avec ce changement, vous pouvez appeler CreateFileA
.