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

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

  • 相关阅读:
    GIF文件转换为头文件工具
    深夜杂想
    swift项目第十天:网络请求工具类的封装
    swift项目第九天:正则表达式的学习
    swift项目第八天:自定义转场动画以及设置titleView的状态
    swift项目第七天:构建访客界面以及监听按钮点击
    swift项目第六天:中间发布按钮的封装以及监听点击事件
    swift项目第五天:swift中storyBoard Reference搭建主界面
    swift项目第四天:动态加载控制器
    swift项目第三天:手写代码搭建主框架
  • 原文地址:https://www.cnblogs.com/huhuhusanling/p/10559231.html
Copyright © 2011-2022 走看看