无法将参数1从'char'转换为'LPCWSTR'

seb*_*ian 28 c++ windows createfile lpcwstr

我一直收到这个错误: 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");
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Mic*_*eyn 112

转到项目的"属性",在"配置属性/常规"下,将"字符集"更改为"未设置".这样,编译器不会假定您需要默认选择的Unicode字符:

替代文字


ybu*_*ill 6

它应该是

int main(int argc, char* argv[]) 
Run Code Online (Sandbox Code Playgroud)

HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
Run Code Online (Sandbox Code Playgroud)

  • 我没有使用ANSI版本的CreateFile是正确的方法,接下来你知道,他将开始更改所有函数调用以使用ANSI版本. (4认同)
  • @Nikola:当然这是错误的方式!我只是认为解释char,wchat_t,TCHAR和如何将正确的unicode应用程序写入绝对初学者之间的区别是不合适的. (2认同)

Nik*_*nić 5

这是Visual Studio默认创建的主要功能:

int _tmain(int argc, _TCHAR* argv[])
Run Code Online (Sandbox Code Playgroud)

其中_TCHAR被定义为char或wchar_t,具体取决于是否定义了_UNICODE.API函数也会发生同样的事情.我建议你不要使用显式的CreateFileA.更改主要内容并使用CreateFile.