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

时间:2010-10-13 14:45:56

标签: 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");

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:112)

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

alt text

答案 1 :(得分:6)

应该是

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

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

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:2)

根据 CharacterSet 的编译器设置,您可能需要执行多字节/ widechar转换,或者如果您不关心它是什么,则更改CharacterSet。

要使用MultiByteToWideChar进行转换,请参阅以下内容...

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

答案 4 :(得分:0)

我猜你正在编译启用Unicode。然后使用char argv[]argvchar数组,因此argv[1]charCreateFile想要const wchar_t*第一个参数,不是char

也就是说,您的main定义也被破坏了,它应该有char* argv[]。通过此更改,您可以致电CreateFileA