Domanda

Continuo a ricevere questo errore: 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");

Qualcuno può aiutarmi?

È stato utile?

Soluzione

Dovrebbe essere

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

E

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

Altri suggerimenti

Vai alla proprietà per il vostro progetto e in Configurazione Proprietà / Generale, modificare il set di caratteri per "Not Set". In questo modo, il compilatore non si assume che si desidera caratteri Unicode, che vengono selezionati per impostazione predefinita:

alt text

Questa è la funzione principale che Visual Studio crea per impostazione predefinita:

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

Dove _TCHAR è definito come char o wchar_t a seconda se _UNICODE è definito o meno. La stessa cosa accade con funzioni API. Vi consiglio di non usare CreateFileA esplicito. Cambia la tua CreateFile principale e l'utilizzo.

A seconda delle impostazioni del compilatore per CharacterSet , potrebbe essere necessario eseguire una più byte / conversione widechar, o cambiare il CharacterSet se non si cura di cosa si tratta.

Per la conversione con MultiByteToWideChar, vedere il seguente ...

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

Credo che si sta compilando con Unicode abilitato. Poi, con char argv[], argv è un array char, quindi argv[1] è un char, e CreateFile vuole un const wchar_t* come primo parametro, non un char.

Detto questo, la tua definizione main è anche rotto, dovrebbe avere char* argv[]. Con questo cambiamento, è possibile chiamare CreateFileA.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top