CreateFile(ComX ...)错误C2664:'CreateFileW':

时间:2019-04-25 18:32:41

标签: c winapi

我必须将信息从uController传输到我的笔记本电脑。创建文件时,出现以下错误。如果您看到脚本,我认为更容易进行故障排除。

因为它说'LPCWSTR'中的'char [20]'不适合,所以我将其更改为:

CreateFile((LPCWSTR)name, GENERIC..

现在我可以编译程序了,但是我仍然得到INVALID_HANDLE_VALUE,并且我无法打开端口。

我的串行例程:

#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);

...

我的主看起来像这样:

#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;
     }
    …

1 个答案:

答案 0 :(得分:1)

类型转换不会更改字符串的基础编码。如果需要为CreateFile字符串表示的文件或设备名称调用char *,请显式地或通过更改项目设置以不使用Unicode来使用CreateFileA

当然,如果您确实想将char *字符串传递给CreateFile。更为明智的选择是将name的类型从char更改为wchar_t(Windows 平台类型为WCHAR)。