zoukankan      html  css  js  c++  java
  • C++ struct结构体定义构造函数和析构函数,构造函数参数从VS2017平台转换到Qt5平台下构建出错,采用字符集转换函数将string类型转换为wstring,构建仍然出错!

    调试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#之Attribute(特性)
    MongoDB 学习笔记
    WCF学习笔记(基于REST规则方式)
    一个简单的WebService实例
    简单的NHibernate学习笔记
    ASP.NET MVC 搭建简单网站 --1.前端页面布局和基本样式实现
    sql触发器知识
    Aspose.Cells.dll引用导入导出Excel
    Sql语句批量更新数据(多表关联)
    JsTree异步加载数据实现多级菜单
  • 原文地址:https://www.cnblogs.com/huhuhusanling/p/10559231.html
Copyright © 2011-2022 走看看