无法将参数1从“ char”转换为“ lpcwstr”
-
29-09-2019 - |
题
我一直遇到这个错误: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。
取决于您的编译器设置 字符集, ,如果您不在乎它是什么,则可能需要执行多级 /宽大转换或更改字符。
有关使用MultibyTetoWidechar转换,请参见以下...
我想您正在启用Unicode编译。然后 char argv[]
, argv
是一个 char
数组,所以 argv[1]
是一个 char
, , 和 CreateFile
想要一个 const wchar_t*
作为第一个参数,不是 char
.
就是说,你 main
定义也被打破,应该有 char* argv[]
. 。通过这种更改,您可以致电 CreateFileA
.
不隶属于 StackOverflow