#Duilib静态库的编译
准备
首先需要从github下载duilib源码 下载地址
下载完毕后将它解压。
##开始编译##
使用visual打开\duilib-master\DuiLib下的DuiLib_Static.vcxproj,然后就直接生成。
##使用##
默认生成目录在\duilib-master\DuiLib\Build里面,根据你生成的项目版本,我生成的Debug_u就直接复制DuiLib\Build\Debug_u\DuiLib_Static_ud.lib到需要的项目中。
拷贝到需要的项目后直接使用
#pragma comment(lib, "DuiLib_Static_ud.lib")
就可以了,但是要记得
#include "UIlib.h"
##错误##
###1###
如果出现类似与这样的错误,那么就是你的运行库设置的不对,Duilib静态库默认的是MTd,我们需要把它调成一样的。
就像这样:
###2###
如果出现这样的错误,就应该是没有设置好宏。
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall DuiLib::WindowImplBase::WindowImplBase(void)" (__imp_??0WindowImplBase@DuiLib@@QAE@XZ),该符号在函数 "public: __thiscall MainClass::MainClass(void)" (??0MainClass@@QAE@XZ) 中被引用
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __thiscall DuiLib::WindowImplBase::~WindowImplBase(void)" (__imp_??1WindowImplBase@DuiLib@@UAE@XZ),该符号在函数 "public: virtual __thiscall MainClass::~MainClass(void)" (??1MainClass@@UAE@XZ) 中被引用
fatal error LNK1120: 2 个无法解析的外部命令
打开Uilib.h在开始的一部分我们可以看到这样的一段代码:
#ifdef UILIB_STATIC
# define DUILIB_API
#else
# if defined(UILIB_EXPORTS)
# if defined(_MSC_VER)
# define DUILIB_API __declspec(dllexport)
# else
# define DUILIB_API
# endif
# else
# if defined(_MSC_VER)
# define DUILIB_API __declspec(dllimport)
# else
# define DUILIB_API
# endif
# endif
#endif
再联系报错的内容
error LNK2019: 无法解析的外部符号 "__declspec(dllimport)
很明显需要添加上宏:UILIB_STATIC
##最后##
如何需要Duilib的Git地址https://github.com/duilib/duilib.git