• 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名称即可通过编译。

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

  • 相关阅读:
    对用户控件(ascx)属性(property)赋值
    The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
    图片淡入淡出切换效果
    在用户控件(ASCX)创建用户控件(ASCX)
    Login failed for user 'xxx'
    一些较好的书
    儿子购买的书
    怀念以前做网管的日子
    Linux下selinux简单梳理
    Rsync同步时删除多余文件 [附:删除大量文件方法的效率对比]
  • 原文地址:https://www.cnblogs.com/huhuhusanling/p/10559231.html
Copyright © 2020-2023  润新知