c++ windows createfile lpcwstr

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 ...

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


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: