記事ディレクトリ
1. ネイティブ DuiLib をコンパイルして実行します
ネイティブ DuiLib アドレス: DuiLib アドレス。
1.1. このようにダウンロードして解凍します
1.2. .sln ソリューション ファイルを開く
ネイティブDuiLib は、デフォルトでマルチバイト マルチキャラクタ セットを設定し、デフォルトで.dllダイナミック ライブラリを生成します。
1.3、コンパイル成功
binディレクトリには、さまざまな **.exe実行可能ファイルと.dll** ダイナミック ライブラリが生成されます。
2. Netease DuiLib をコンパイルして実行します。
github アドレス: Netease DuiLib。
2.1. このようにダウンロードして解凍します
2.2. .sln ソリューション ファイルを開く
2.3、コンパイル成功
binディレクトリには、さまざまな.exe実行可能ファイルとlibs ディレクトリ内の.lib静的ライブラリが生成されます。
3. Tencent DuiLib と 2017 をコンパイルして実行する
3.1. 次のようにダウンロードして解凍します
3.2. .sln ソリューション ファイルを開く
3.3、コンパイル成功
4. ネイティブDuiLibの.libと.dllの静的ライブラリと動的ライブラリ
4.1. Mr.DuiLib を使用して .dll ダイナミック ライブラリを生成する
ビルドディレクトリ:
4.2. DuiLib を使用して静的ライブラリを生成する
ビルドディレクトリ:
4.3、win32 プロジェクトを作成する
4.3.1. 新しいプロジェクトの作成
このインターフェースが出てきます:
4.3.2. 設定項目
マルチバイトのマルチ文字セット:
構成ヘッダー ファイルのディレクトリ:
構成ライブラリのディレクトリ:
4.3.3. ヘッダーファイルをインクルードし、DuiLib コマンドスペースを使用する
コンパイルに問題がない場合は、DuiLiB の構成が成功したことを意味します。
4.3.4. .dll ダイナミック ライブラリを使用する簡単なプログラムを作成する
// new_test_demo.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "new_test_demo.h"
#include"UIlib.h"
using namespace DuiLib;
class CFrameWindowWnd : public CWindowWnd, public INotifyUI
{
public:
CFrameWindowWnd() {
};
LPCTSTR GetWindowClassName() const {
return _T("UIMainFrame"); };
UINT GetClassStyle() const {
return UI_CLASSSTYLE_FRAME | CS_DBLCLKS; };
void OnFinalMessage(HWND /*hWnd*/) {
delete this; };
void Notify(TNotifyUI& msg)
{
if (msg.sType == _T("click")) {
if (msg.pSender->GetName() == _T("closebtn")) {
Close();
}
}
}
LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_CREATE) {
m_pm.Init(m_hWnd);
CControlUI *pButton = new CButtonUI;
pButton->SetName(_T("closebtn"));
pButton->SetBkColor(0xFFFF0000);
m_pm.AttachDialog(pButton);
m_pm.AddNotifier(this);
return 0;
}
else if (uMsg == WM_DESTROY) {
::PostQuitMessage(0);
}
LRESULT lRes = 0;
if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes;
return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
}
public:
CPaintManagerUI m_pm;
};
// 程序入口及Duilib初始化部分
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath());
CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if (pFrame == NULL) return 0;
pFrame->Create(NULL, _T("测试"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
pFrame->ShowWindow(true);
CPaintManagerUI::MessageLoop();
return 0;
}
コンパイル:
実行時にエラーが報告され、.dllダイナミック ライブラリが見つかりません。
**.dll ダイナミック ライブラリを.exe** と同じディレクトリに置くだけです。
再度正常に実行します。
4.3.5. .lib ダイナミック ライブラリを使用する簡単なプログラムを作成する
4.3.5.1. lib 静的ライブラリを生成し、Duilib 静的ライブラリを正しくコンパイルする
4.3.5.1.1. 公式DuiLib_Staticプロジェクトを追加する
公式コードにはプロジェクトファイルがありDuiLib_Static.vcxproj
、これはDuiLibの静的ライブラリによってコンパイルされたプロジェクトです。
**(ここで変更されています)** しかし、注意深い人は、プロジェクト ファイルが 1 つしかなく、ファイル ディレクトリ ツリー記述ファイル.vcproj
がないことに気づいたかもしれません。.filters
問題はありません。Duilib.vcxproj.filters
ファイルを直接コピーして に名前を変更できますDuilib_Static.vcxproj.filters
。このファイルはvsで見られるファイル ディレクトリ構造のみを記述しており、静的ライブラリと動的ライブラリの両方が同じディレクトリ ツリーを使用します。変更が完了すると、次の図のようになります。
Duilib_Static.vcxproj.filtersファイルを追加し、このプロジェクトをduilibソリューションに追加します。次に、DuiLib_Static.vcxprojを開いてコンパイルします。
このようにして、 DuiLib_d.lib静的ライブラリが生成されます。
4.3.5.2. UILIB_STATIC をプロジェクトプリプロセッサに追加する
4.3.5.3、DuiLib_d.lib 静的ライブラリを追加
4.3.5.4. 再コンパイル時に以下の問題が発生する
マルチスレッド デバッグ用にC++ ランタイム ライブラリを変更します。
再度コンパイルします。