调试win硬件驱动,需要利用VS编译的win驱动构建自己的Qt5GUI程序:
其中部分win驱动源码如下
device_file::device_file(const std::string& path, DWORD accessFlags) {
h = CreateFile(path.c_str(), accessFlags, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
}
调用winAPI CreateFile函数在win中字符编码是两个字节,但在Qt5中UTF_8是一个字节,构建出错,错误信息如下:
error: C2664:
“HANDLE CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE)”:
无法将参数 1 从“const _Elem *”转换为“LPCWSTR”
with [ _Elem=char]
与指向的类型无关;强制转换要求 reinterpret_cast、C 样式强制转换或函数样式强制转换。
采用方法参考:https://www.cnblogs.com/lxt287994374/archive/2013/06/13/3133389.html
将第一个参数采用调用函数方法转换为wstring类型,构建结果出错,错误信息:
error: C2664: “std::basic_string<char,std::char_traits<char>,std::allocator<char>>::basic_string(const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &)”: 无法将参数 1 从“WCHAR [1]”转换为“std::initializer_list<_Elem>”with[_Elem=char]
2019年3月19日
原文地址:https://www.cnblogs.com/huhuhusanling/p/10559231.html