zoukankan      html  css  js  c++  java
  • 使用Duilib开发Windows软件(1)——HelloWorld

    我使用的是网易版本: https://github.com/netease-im/NIM_Duilib_Framework
    时间是2019-11-28,作者最新的提交如下图:

    运行官方示例程序

    下载完成后进入如下目录双击打开工程:

    打开后的工程(我使用的是VS2019社区版):

    目前我只关心base和duilib两个工程,右键工程,属性,修改下图两个地方成本机环境:

    这是我改完之后的样子:

    然后右键,rebuild,base和duilib都执行rebuild,如果不出意外就能编译成功:

    然后我们再去examples文件夹下把basic工程修改下:

    右键编译basic工程:

    不出意外也是会编译成功的,编译成功把basic设置为启动项目:

    然后点击启动软件:

    创建新项目

    添加Windows Desktop Application新工程:

    新建工程如下:

    设置新建的工程为启动项目,直接运行下:

    实际上作者有新建项目的教程,但是比较老了,有些东西不适用(比如当前版本就没有shared这个工程),下面是我的步骤:
    作者教程 https://github.com/feipeng8848/NIM_Duilib_Framework/blob/master/docs/GETTING-STARTED.md

    删除wWinMain函数所在文件的绝大多数内容只留下如下代码:

    #include "framework.h"
    #include "feipeng8848.h"
    
    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                         _In_opt_ HINSTANCE hPrevInstance,
                         _In_ LPWSTR    lpCmdLine,
                         _In_ int       nCmdShow)
    {
        UNREFERENCED_PARAMETER(hPrevInstance);
        UNREFERENCED_PARAMETER(lpCmdLine);
    
    
    
        return 0;
    }
    

    设置输出目录

    首先在工程目录下新建个文件夹Bin和Tmp分别作为程序输出目录和中间目录:

    项目属性->常规(此处目录配置有误,不再重新截图了,后面有修正):

    添加包含目录

    把上面我们已经能够成功编译通过的base和duilib两个工程拷贝下(build文件夹也拷贝过来):

    去我们新建的解决方案目录下新建个文件夹ToolKits:

    把刚刚复制的三个文件夹粘贴到ToolKits文件夹里:

    去VS中添加现有项目,把base和duilib两个项目添加进来:

    新建个Libs目录,让base和duilib编译后输出到Libs,修改这两个项目的输出目录到Libs和Tmp中:


    编译这两个项目得到lib文件:

    然后去把这两个项目包好到我们的feipeng8848项目中,项目属性->VC++ 目录->包含目录中

    项目属性->C/C++->代码生成,将 Debug 模式的运行库修改为 /MTd,将 Release 模式的运行库修改为 /MT,注意区分debug和release:

    项目右键->添加->引用,将 base、duilib 作为引用项目,这样就不需要手动引入静态库文件了:

    引入头文件

    新建个stdafx.h文件,然后添加

    // base header
    #include "base/base.h"
    
    // duilib
    #include "duilib/UIlib.h"
    

    引入线程库

    在创建的项目中 wWinMain 所属的头文件中,增加自定义的主线程对象

    在 wWinMain 的下面增加主线程对象的方法实现,在这里初始化 duilib

    在 wWinMain 实例化主线程对象,并调用执行主线程循环,添加后 wWinMain 函数修改如下:

    创建一个简单窗口

    去作者的工程bin目录下把resources文件夹拷贝到我们的Bin目录下:

    这个文件夹下有作者创建好的窗体,暂时不做详解。
    然后去把作者的basic目录中下图两个文件拷贝到我们的工程目录中:

    然后在VS中添加现有文件到工程中:

    显示窗口

    在主线程的 Init 方法中,创建窗口并居中显示,创建窗口前先引入窗口的头文件,修改后的代码如下:

    注意此时有很多标红的错误,是因为没有引入头文件,下图是添加后的:

    然后编译项目就可以了,但是我出现了错误,原因是刚才修改的项目输出目录不对,修改之后的样子如下:

    然后再执行编译就可以了:

    我的示例工程下载链接:
    https://github.com/feipeng8848/NIM_Duilib_Framework/blob/master/feipeng8848.zip

    问题

    VS2019无法编译ui_components工程,也无法编译所有引用ui_components的工程,详情见 https://github.com/netease-im/NIM_Duilib_Framework/issues/124 我试过用vs2017是可以编译所有的工程的。

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/feipeng8848/p/11912613.html
Copyright © 2011-2022 走看看