E0167 “const char *”类型的参数与“LPCWSTR”类型的参数不兼容

问题描述 投票:0回答:1
#include <Windows.h>
#include <iostream>
#include <vector>
#include <string>
std::vector<std::string> serialCOM::list_serial_ports()
{
    std::vector<std::string> ports;
    // Enumerate all available COM ports
    for (int i = 1; i <= 256; i++) {
        std::string port = "COM" + std::to_string(i);
        HANDLE hComm = CreateFile(port.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

    }
    return ports;
    
}

预计此行没有错误 // CreateFile(port.c_str() E0167 “const char *”类型的参数与“LPCWSTR”类型的参数不兼容

c++11 com serial-port
1个回答
0
投票

您正在使用

CreateFileW
,它需要一个
const wchar_t*
(这就是
LPCWSTR
typedef
的原因)。
port.c_str()
返回一个
const char*
并且这些指针不兼容。

要么使用

CreateFileA
代替(需要
const char*
/
LPCSTR
)或者使
port
成为
std::wstring
并继续使用
CreateFileW

std::wstring port = L"COM" + std::to_wstring(i);
HANDLE hComm = CreateFileW(port.c_str(), ...
© www.soinside.com 2019 - 2024. All rights reserved.