Pregunta

Quiero evitar 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?

¿Fue útil?

Solución

Debe ser

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

y

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

Otros consejos

Vaya a las propiedades de su proyecto y en Configuración de Propiedades / General, cambiar el juego de caracteres a "no ajustada". De esta manera, el compilador no asumirá que desea caracteres Unicode, que se seleccionan de forma predeterminada:

text alt

Esta es la función principal que Visual Studio crea por defecto:

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

donde se define _TCHAR ser CHAR o wchar_t dependiendo de si se define o no _UNICODE. Lo mismo ocurre con las funciones de la API. Te aconsejaría contra el uso de CreateFileA explícita. Cambiar su CreateFile principal y su uso.

En función de la configuración del compilador para de Caracteres , puede que tenga que realizar una conversión de varios bytes / widechar, o cambiar el Juego de Caracteres, si no le importa lo que es.

Para convertir con MultiByteToWideChar, consulte la siguiente ...

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

supongo que está compilando con Unicode. Luego, con char argv[], argv es una matriz de char, por lo argv[1] es un char, y CreateFile quiere un const wchar_t* como primer parámetro, no un char.

Dicho esto, su definición main se rompe también, debe tener char* argv[]. Con este cambio, puede llamar CreateFileA.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top