c++ - no se puede convertir el parámetro 1 de ''char'' a ''LPCWSTR''
windows createfile (5)
Sigo recibiendo este error: 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");
alguien puede ayudar?
Debería ser
int main(int argc, char* argv[])
Y
HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
Dependiendo de la configuración del compilador para CharacterSet , es posible que deba realizar una conversión multibyte / widechar, o cambiar el CharacterSet si no le importa lo que sea.
Para convertir con MultiByteToWideChar, vea lo siguiente ...
Esta es la función principal que crea Visual Studio por defecto:
int _tmain(int argc, _TCHAR* argv[])
Donde _TCHAR se define como char o wchar_t dependiendo de si _UNICODE está definido o no. Lo mismo sucede con las funciones de la API. Le aconsejaría que no utilice explícitamente CreateFileA. Cambia tu main y usa CreateFile.
Supongo que estás compilando con Unicode habilitado. Luego, con char argv[]
, argv
es una matriz char
, así que argv[1]
es un char
, y CreateFile
quiere un const wchar_t*
como primer parámetro, no un char
.
Dicho esto, tu definición main
también está rota, debería tener char* argv[]
. Con ese cambio, puedes llamar a CreateFileA
.
Vaya a las Propiedades de su proyecto y en Propiedades de configuración / General, cambie el Conjunto de caracteres a "No establecido". De esta manera, el compilador no asumirá que desea caracteres Unicode, que están seleccionados de forma predeterminada: