赞
踩
原生DuiLib地址:DuiLib地址 。
原生DuiLib默认是多字节多字符集、以及默认生成 .dll 动态库。
在bin目录下,生成了各种**.exe可执行文件以及.dll**动态库:
github地址:网易DuiLib 。
在bin目录下,生成了各种 .exe 可执行文件以及在libs目录下 .lib 静态库:
生成目录:
生成目录:
出来这个界面:
多字节多字符集:
配置头文件目录:
配置库目录:
编译没有问题就说明配置DuiLiB包含成功:
// 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**同级目录即可。
再次运行成功:
在官方的代码中有一个 DuiLib_Static.vcxproj
的工程文件,这就是 DuiLib 的静态库编译的工程。
**(这里已经修改过的)**但是细心的人可能发现了,仅有一个 .vcproj
的项目文件,没有 .filters
的文件目录树描述文件。没关系,我们直接复制一份 Duilib.vcxproj.filters
文件改名为 Duilib_Static.vcxproj.filters
即可,这个文件只是描述在 vs 中看到的文件目录结构,静态库和动态库都使用一样的目录树即可。修改完成后是下面这幅图的样子:
我们增加了 Duilib_Static.vcxproj.filters 的文件,此时我们把这个工程添加到 duilib 的解决方案中。然后打开DuiLib_Static.vcxproj编译:
这样就生成了DuiLib_d.lib静态库。
修改C++运行库为多线程调试:
再次编译:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。