使用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 方法中,創建窗口並居中顯示,創建窗口前先引入窗口的頭文件,修改后的代碼如下:

注意此時有很多標紅的錯誤,是因為沒有引入頭文件(注意兩個頭文件要在feipeng8848.h之前),下圖是添加后的:

或者你直接把頭文件的引入放到feipeng8848.h頭文件中,更好一點:

然后編譯項目就可以了,但是我出現了錯誤,原因是剛才修改的項目輸出目錄不對,修改之后的樣子如下:

然后再執行編譯就可以了:

我的示例工程下載鏈接:
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是可以編譯所有的工程的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM