cannot convert parameter 1 from 'char' to 'LPCWSTR'

前端 未结 5 871
遥遥无期
遥遥无期 2020-12-02 20:14

I keep getting this error: cannot convert parameter 1 from \'char\' to \'LPCWSTR\'

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

   // open port for I/         


        
相关标签:
5条回答
  • 2020-12-02 21:02

    Depending on your compiler setting for CharacterSet, you may need to perform a multibyte / widechar conversion, or change the CharacterSet if you don't care what it is.

    For converting with MultiByteToWideChar, see the following...

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

    0 讨论(0)
  • 2020-12-02 21:07

    I guess you're compiling with Unicode enabled. Then with char argv[], argv is a char array, so argv[1] is a char, and CreateFile wants a const wchar_t* as first parameter, not a char.

    That said, your main definition is also broken, it should have char* argv[]. With that change, you can call CreateFileA.

    0 讨论(0)
  • 2020-12-02 21:11

    This is the main function that Visual Studio creates by default:

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

    Where _TCHAR is defined to be char or wchar_t depending if _UNICODE is defined or not. The same thing happens with API functions. I would advise you against using explicit CreateFileA. Change your main and use CreateFile.

    0 讨论(0)
  • 2020-12-02 21:14

    Go to the Properties for your Project and under Configuration Properties/General, change the Character Set to "Not Set". This way, the compiler will not assume that you want Unicode characters, which are selected by default:

    alt text

    0 讨论(0)
  • 2020-12-02 21:19

    It should be

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

    And

    HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
    
    0 讨论(0)
提交回复
热议问题