我一直遇到这个错误: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字符,默认情况下会选择:

alt text

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

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

如果_tchar定义为char或wchar_t,则根据_unicode是否定义。 API函数也会发生同样的事情。我建议您不要使用明确的CreateFilea。更改您的主体并使用CreateFile。

取决于您的编译器设置 字符集, ,如果您不在乎它是什么,则可能需要执行多级 /宽大转换或更改字符。

有关使用MultibyTetoWidechar转换,请参见以下...

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

我想您正在启用Unicode编译。然后 char argv[], argv 是一个 char 数组,所以 argv[1] 是一个 char, , 和 CreateFile 想要一个 const wchar_t* 作为第一个参数,不是 char.

就是说,你 main 定义也被打破,应该有 char* argv[]. 。通过这种更改,您可以致电 CreateFileA.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top