Directorio de artículos
- 1. Compilar y ejecutar DuiLib nativo
- 2. Compilar y ejecutar Netease DuiLib
- 3. Compilar y ejecutar Tencent DuiLib vs 2017
- 4. Biblioteca estática y biblioteca dinámica de .lib y .dll de DuiLib nativo
-
-
- 4.1 Use Mr. DuiLib para generar la biblioteca dinámica .dll
- 4.2 Usar DuiLib para generar una biblioteca estática
- 4.3, escribir un proyecto win32
- 4.3.5 Escriba un programa simple para usar la biblioteca dinámica .lib
-
1. Compilar y ejecutar DuiLib nativo
Dirección nativa de DuiLib : Dirección de DuiLib .
1.1. Descárgalo y descomprímelo así
1.2 Abra el archivo de solución .sln
El DuiLib nativo tiene por defecto un conjunto de varios caracteres de varios bytes y genera una biblioteca dinámica .dll de forma predeterminada.
1.3, compilar con éxito
En el directorio bin , se generan varios archivos ejecutables **.exe y bibliotecas dinámicas .dll** :
2. Compilar y ejecutar Netease DuiLib
dirección de github: Netease DuiLib .
2.1. Descárgalo y descomprímelo así
2.2 Abra el archivo de solución .sln
2.3, compilar con éxito
En el directorio bin , se generan varios archivos ejecutables .exe y bibliotecas estáticas .lib en el directorio libs :
3. Compilar y ejecutar Tencent DuiLib vs 2017
3.1. Descárgalo y descomprímelo así
3.2 Abra el archivo de solución .sln
3.3, compilar con éxito
4. Biblioteca estática y biblioteca dinámica de .lib y .dll de DuiLib nativo
4.1 Use Mr. DuiLib para generar la biblioteca dinámica .dll
Directorio de compilación:
4.2 Usar DuiLib para generar una biblioteca estática
Directorio de compilación:
4.3, escribir un proyecto win32
4.3.1 Crear un nuevo proyecto
Sale esta interfaz:
4.3.2 Elementos de configuración
Conjuntos de caracteres múltiples de varios bytes:
Directorio del archivo de encabezado de configuración:
Directorio de la biblioteca de configuración:
4.3.3 Incluya archivos de encabezado y use el espacio de comando DuiLib
Si no hay problema con la compilación, significa que la configuración de DuiLiB es exitosa:
4.3.4 Escriba un programa simple para usar la biblioteca dinámica .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;
}
compilar:
Al ejecutar, se informará un error y faltará la biblioteca dinámica .dll :
Simplemente coloque la biblioteca dinámica **.dll en el mismo directorio que el .exe**.
Ejecutar de nuevo con éxito:
4.3.5 Escriba un programa simple para usar la biblioteca dinámica .lib
4.3.5.1 Generar la biblioteca estática lib y compilar la biblioteca estática Duilib correctamente
4.3.5.1.1 Agregar el proyecto DuiLib_Static oficial
Hay un archivo de proyecto en el código oficial DuiLib_Static.vcxproj
, que es el proyecto compilado por la biblioteca estática de DuiLib.
**(Se ha modificado aquí)** Pero las personas cuidadosas pueden haber descubierto que solo hay un .vcproj
archivo de proyecto y no hay .filters
un archivo de descripción del árbol del directorio de archivos. No importa, podemos copiar directamente un Duilib.vcxproj.filters
archivo y cambiarle el nombre a Duilib_Static.vcxproj.filters
, este archivo solo describe la estructura del directorio de archivos que se ve en vs , y tanto la biblioteca estática como la biblioteca dinámica usan el mismo árbol de directorios. Una vez completada la modificación, se verá como la siguiente imagen:
Agregamos el archivo Duilib_Static.vcxproj.filters y ahora agregamos este proyecto a la solución duilib . Luego abra DuiLib_Static.vcxproj para compilar:
De esta forma se genera la librería estática DuiLib_d.lib .
4.3.5.2 Agregar UILIB_STATIC al preprocesador del proyecto
4.3.5.3, agregue la biblioteca estática DuiLib_d.lib
4.3.5.4 Ocurren los siguientes problemas al volver a compilar
Modifique la biblioteca de tiempo de ejecución de C++ para la depuración de subprocesos múltiples:
Compilar de nuevo: