我一直得到这个错误: 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");
有人可以帮忙吗?
它应该是
int main(int argc, char* argv[])
和
HANDLE h = CreateFileA(argv[1],GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
转到您的项目的属性,并在配置属性/常规下,将字符集更改为“未设置”。 这样,编译器就不会假设你想要默认选择的Unicode字符:
这是Visual Studio默认创建的主要功能:
int _tmain(int argc, _TCHAR* argv[])
其中_TCHAR被定义为char或wchar_t,具体取决于是否定义了_UNICODE。 API函数也会发生同样的情况。 我建议你不要使用显式的CreateFileA。 改变你的主,并使用CreateFile。
根据您对CharacterSet的编译器设置,您可能需要执行多字节/宽度转换,或者如果您不关心它是什么,请更改CharacterSet。
要使用MultiByteToWideChar进行转换,请参阅以下内容…
我想你正在编译启用Unicode。 然后用char argv[]
, argv
是一个char
数组,所以argv[1]
是一个char
,而CreateFile
一个const wchar_t*
作为第一个参数,而不是char
。
这就是说,你的main
定义也被打破了,它应该有char* argv[]
。 有了这个改变,你可以调用CreateFileA
。