CreateFile(ComX…)错误C2664:&x27;CreateFileW';:
我必须将信息从uController传输到我的笔记本电脑。当我创建文件时,我得到以下错误。我认为如果您看到脚本,就更容易进行故障排除 因为上面说“LPCWSTR”中的“char[20]”不合适,所以我将其更改为:CreateFile(ComX…)错误C2664:&x27;CreateFileW';:,c,winapi,C,Winapi,我必须将信息从uController传输到我的笔记本电脑。当我创建文件时,我得到以下错误。我认为如果您看到脚本,就更容易进行故障排除 因为上面说“LPCWSTR”中的“char[20]”不合适,所以我将其更改为: CreateFile((LPCWSTR)name, GENERIC.. #include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h> #include
CreateFile((LPCWSTR)name, GENERIC..
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <conio.h>
#include "com_bg.hpp"
#include "com._bg.cpp"
#include "tchar.h"
using namespace std;
int _tmain(int argc, _TCHAR *argv[])
{
printf("Hello\n");
getch();
err = openCom(8, 9600, NONE,1,RTSDTRLOW);
if (err != OK)
{
closeCom();
printf("Failed to OpenPort\n");
return 0;
}
…
现在我可以编译程序了,但是我仍然得到无效的句柄值,并且我无法打开端口
我的系列程序:
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include "com_bg.hpp"
char name[20]=""; //between the "" inserting COM"X"
...
do
{
port = CreateFile(name, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (port==INVALID_HANDLE_VALUE)
{
k++;
}
}
while ((k<MAXCREAT) && (port==INVALID_HANDLE_VALUE));
if (k==MAXCREAT)
return(ERR_COM);
...
#包括
#包括
#包括
#包括
#包括“com_bg.hpp”
字符名[20]=“”//在“插入COM”X之间
...
做
{
port=CreateFile(名称,泛型读取,泛型写入,0,NULL,打开现有,0,NULL);
if(端口==无效的\u句柄\u值)
{
k++;
}
}
while((kType casting)不会更改字符串的基本编码。如果需要调用CreateFile
以获取在char*
字符串中表示的文件或设备名称,请显式使用CreateFileA
,或者将项目设置更改为不使用Unicode
当然,如果您确实想将char*
字符串传递到CreateFile
,那么更明智的选择是将name
的类型从char
更改为wchar\t
(Windows
平台类型为WCHAR
)。因为COM端口总是通过控制台手动更改im输入字符。因此我必须使用字符。当我更改为“WCHAR\u t”或“WCHAR”时,它会显示:C2440:“initialiseurng”:“const char[1]”不能“WCHAR\u t[20]”@Sebastian使用L前缀初始化宽字符串:L“Hello World”;