不能将参数1从'char'转换为'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"); 

有人可以帮忙吗?

它应该是

 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进行转换,请参阅以下内容…

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