我一直收到这个错误:
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");
有人可以帮忙吗?
答案 0 :(得分:112)
转到项目的“属性”,在“配置属性/常规”下,将“字符集”更改为“未设置”。这样,编译器不会假定您需要默认选择的Unicode字符:
答案 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进行转换,请参阅以下内容...
答案 4 :(得分:0)
我猜你正在编译启用Unicode。然后使用char argv[]
,argv
是char
数组,因此argv[1]
是char
,CreateFile
想要const wchar_t*
第一个参数,不是char
。
也就是说,您的main
定义也被破坏了,它应该有char* argv[]
。通过此更改,您可以致电CreateFileA
。