non può convertire il parametro 1 da 'char' a 'LPCWSTR'
-
29-09-2019 - |
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?
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:
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 ...
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
.