我使用的是网易版本: 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是可以编译所有的工程的。

使用Duilib开发Windows软件(1)——HelloWorld的更多相关文章

  1. 使用Duilib开发Windows软件(2)——控件的基本介绍

    XML 先学习xml https://www.w3cschool.cn/xml/xml-xml-tutorialhc4o1t5m.html 控件 上图是我们下载的NIM_Duilib_Framewor ...

  2. 使用Duilib开发Windows软件(5)——使用VLC做视频播放

    需求:调用PC上的摄像头拍照. 实现思路:接入视频流,截屏获取照片. 早期的vlc安装包(Windows)是附带sdk包的,现在的安装后已经没有了,原因如下: VLC SDK下载连接:https:// ...

  3. 使用Duilib开发Windows软件(4)——消息传递

    云信Duilib中没有窗体类的函数可以用来直接收取到所有控件的事件,每个控件都可以单独设置自己的事件处理函数,一般在InitWindow方法中初始化各个控件的事件处理函数. 每个控件都有许多形如Att ...

  4. 使用Duilib开发Windows软件(3)——控件的样式

    摘抄下 https://www.cnblogs.com/Alberl/p/3344936.html 的一段代码 <?xml version="1.0" encoding=&q ...

  5. 开发客户端软件时,出现System.Windows.Markup.XamlParseException错误

    开发客户端软件时,出现System.Windows.Markup.XamlParseException错误,通过查看错误消息,发现TCPIP的一个COM组件在安装软件过程中被删除了,重新注册了一下TC ...

  6. 网易云信Duilib开发实践和Windows应用界面开发框架源码开源介绍

    序言 Duilib介绍 Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可.Duilib可以简单方便地 ...

  7. 2014年最热门的国人开发开源软件TOP100

    2014年最热门的国人开发开源软件TOP100 不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多 ...

  8. Selenium2学习-001-Selenium2 WebUI自动化Java开发 Windows 环境配置

    此文主要介绍 Selenium2 WebUI自动化Java开发 Windows 环境配置,供各位亲们参考,若有不足之处,敬请各位大神指正,非常感谢! 所需软件列表如下所示: 所属分类 具体名称 备注 ...

  9. Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册

    豆豆手册 □ BSD手册 □ Linux手册 □ 数据库手册 □ 编程开发手册 □ WEB开发手册 □ 软件应用手册 □ 网络技术手册 □ GNU手册 在线手册 首 页 BSD手册   ·FreeBS ...

随机推荐

  1. class 绑定的数据对象不必内联定义在模板里

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 针对于linux初学者的学习(摘自网络端)

    一. 选择适合自己的Linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他 ...

  3. 【scikit-learn】06:make_blobs聚类数据生成器

      版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kevinelstri/article/ ...

  4. Error: unable to load xmlsec-openssl library

    yum install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel

  5. Fiddler is not capturing web request from Firefox

    Fiddler is not capturing web request from Firefox You can also get the FiddlerHook plug in for Firef ...

  6. Linux CentOS 7 常用命令集合

  7. MongoDB基础笔记

    MongoDB show dbs 查看当前的数据库 use test 选库 show tables/collections 查看当前库下的文档 db.help() 查看帮助 db.createColl ...

  8. PS 实用技巧

    1.  调整大小     ctrl + T 2. 导出透明背景图片    选择  png格式

  9. Qt编写自定义控件52-颜色下拉框

    一.前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个控件的难度系数接近 ...

  10. Python SciPy库——插值与拟合

    插值与拟合 原文链接:https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 # -*- coding: utf-8 -*- import numpy a ...