调试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日

2019年3月20 日

寻找朋友帮助后发现是源码问题,一是容器,而是编译环境;

1 容器方面--错误原因:构造空的vector时是不调用对象的构造函数

std::vector<std::string> device_paths;
//
// for (unsigned index = 0;
// SetupDiEnumDeviceInterfaces(device_info, NULL, &guid, index, &device_interface);

2 编译环境--错误原因:

VS2017编译win驱动,Qt调用win驱动会出点问题。

--------------------------------------------------------------------------------------------------------------

将多字节宽字符问题在VS上解决后,Qt5构建出错:

LNK2005:main已经在main.obj中定义:未找到文件:xdma_test.obj

LNK1169:找不到一个或多个重定义的符号

这里待解决。。。。继续更新。。。。

技术提升的道路永无止境在Qt中

针对LNK2005:main已经在main.obj中定义:未找到文件:xdma_test.obj问题,LNK1169:找不到一个或多个重定义的符号。

在Qt5中查找main发现mainwindow.h和xxxx.cpp均有main定义更换xxxx.cpp中的main名称即可通过编译。

---------------------------------------------------------------------------------------------------------------

C++ struct结构体定义构造函数和析构函数,构造函数参数从VS2017平台转换到Qt5平台下构建出错,采用字符集转换函数将string类型转换为wstring,构建仍然出错!的更多相关文章

  1. 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct

    https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...

  2. C#基础--struct(结构体)

    结构体和类有点类似    我们定义一个类的时候    是class   类名   定义结构体的时候是 struct   结构体名 结构体的写法 struct Point { // public int ...

  3. Swift类和结构体定义-备

    Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { ...

  4. go struct结构体

    struct结构体 用来自定义复杂数据结构 struct里面可以包含多个字段(属性),字段可以是任意类型 struct类型可以定义方法,注意和函数的区分 struct类型是值类型 struct类型可以 ...

  5. 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义

    原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { ...

  6. 2018-3-4-dotnet-设计规范-·-结构体定义

    title author date CreateTime categories dotnet 设计规范 · 结构体定义 lindexi 2018-03-04 17:48:44 +0800 2018-2 ...

  7. C# Struct结构体里数组长度的指定

    typedef struct Point{ unsigned short x; unsigned short y; }mPoint;//点坐标 typedef struct Line{ mPoint ...

  8. C语言、结构体 定义

    C语言允许用户自己建立由 不同类型数据组成的组合型数据结构 成为结构体. struct Student { int num; //学号 ]; //姓名为字符串 char sex; //性别为字符型 i ...

  9. 通过 struct 成员地址 获取 struct 结构体地址

    1. 问题描述: 现在定义了一个结构体: struct Foo { int a; int b; }; Foo foo; 假如由于函数传参等原因,现在程序只能拿到 foo.b 的地址,这时想通过某种方法 ...

随机推荐

  1. PHP 两数组循环组合

  2. Java的慢和稳

    对Java的了解还有待进一步提升,也没有做太多实践工作.只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路.得到的总体印象加上书本参考,认为Java的应用场景是慢和稳. 学编程语言总会接触到 ...

  3. 2019年春季学期第三周作业 ----PTA作业

    题目 判断上三角矩阵 上三角矩阵指主对角线以下的元素都为0的矩阵:主对角线为从矩阵的左上角至右下角的连线. 本题要求编写程序,判断一个给定的方阵是否上三角矩阵. 输入格式: 输入第一行给出一个正整数T ...

  4. netstat、ps、top 、kill 命令备忘

    1.ps命令用于显示当前进程 (process) 的状态. -aux 显示所有包含其他使用者的行程. -e 显示所有进程. -f 全格式输出. 一般带参数 -ef 或者 -aux ,差别不大. 区别: ...

  5. 【算法】Attention is all you need

    Transformer 最近看了Attention Is All You Need这篇经典论文.论文里有很多地方描述都很模糊,后来是看了参考文献里其他人的源码分析文章才算是打通整个流程.记录一下. T ...

  6. EndNote中文文献导入出错和数量限制解决

    发现之前记录的存在忽略,把存在的一个重要问题遗漏了,Endnote中文文献导入无法导入,软件奔溃问题,现在在原先基础上补上(补到最后): ..一路绿色φ(>ω<*) φ(>ω< ...

  7. Bootstrap-datepicker3官方文档中文翻译---Methods/方法(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)

    Methods/方法 方法是由 datepicker 函数调用的,第一个参数为字符串,随后是方法所需的任何参数. $('.datepicker').datepicker('method', arg1, ...

  8. 2018年最新JAVA面试题总结之JavaWeb(2)

    转自于:https://zhuanlan.zhihu.com/p/39522575 1.tomcat的优化方式?回答:Tomcat的优化我准备从三方面来说: 第一部分: 内存优化Tomcat的默认内存 ...

  9. 【Linux】在Win10上搭建WSL(适用于Linux的Windows子系统)

    1.打开WSL  ,控制面板 -- 程序 -- 程序和功能 -- 打开或关闭Windows功能 - 选中[适用于Linux的Windows子系统] 2.开启后重启电脑 3.在Win10自带的Micro ...

  10. Anaconda python环境管理

    1.查看conda的版本: conda --version 2. 查看当前系统安装已的python环境: conda info --envs 3. 添加python环境: conda create - ...