1. Compilar y ejecutar DuiLib

1. Compilar y ejecutar DuiLib nativo

Dirección nativa de DuiLib : Dirección de DuiLib .

inserte la descripción de la imagen aquí

1.1. Descárgalo y descomprímelo así

inserte la descripción de la imagen aquí

1.2 Abra el archivo de solución .sln

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

En el directorio bin , se generan varios archivos ejecutables **.exe y bibliotecas dinámicas .dll** :

inserte la descripción de la imagen aquí

2. Compilar y ejecutar Netease DuiLib

dirección de github: Netease DuiLib .

inserte la descripción de la imagen aquí

2.1. Descárgalo y descomprímelo así

inserte la descripción de la imagen aquí

2.2 Abra el archivo de solución .sln

inserte la descripción de la imagen aquí

2.3, compilar con éxito

inserte la descripción de la imagen aquí

En el directorio bin , se generan varios archivos ejecutables .exe y bibliotecas estáticas .lib en el directorio libs :
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

3. Compilar y ejecutar Tencent DuiLib vs 2017

3.1. Descárgalo y descomprímelo así

inserte la descripción de la imagen aquí

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:
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

4.2 Usar DuiLib para generar una biblioteca estática

Directorio de compilación:
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

4.3, escribir un proyecto win32

4.3.1 Crear un nuevo proyecto

inserte la descripción de la imagen aquí

Sale esta interfaz:
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

4.3.2 Elementos de configuración

Conjuntos de caracteres múltiples de varios bytes:

inserte la descripción de la imagen aquí

Directorio del archivo de encabezado de configuración:

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Directorio de la biblioteca de configuración:

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

4.3.3 Incluya archivos de encabezado y use el espacio de comando DuiLib

inserte la descripción de la imagen aquí

Si no hay problema con la compilación, significa que la configuración de DuiLiB es exitosa:

inserte la descripción de la imagen aquí

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:

inserte la descripción de la imagen aquí

Al ejecutar, se informará un error y faltará la biblioteca dinámica .dll :

inserte la descripción de la imagen aquí

Simplemente coloque la biblioteca dinámica **.dll en el mismo directorio que el .exe**.
inserte la descripción de la imagen aquí

Ejecutar de nuevo con éxito:
inserte la descripción de la imagen aquí

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.

inserte la descripción de la imagen aquí

**(Se ha modificado aquí)** Pero las personas cuidadosas pueden haber descubierto que solo hay un .vcprojarchivo de proyecto y no hay .filtersun archivo de descripción del árbol del directorio de archivos. No importa, podemos copiar directamente un Duilib.vcxproj.filtersarchivo 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:
inserte la descripción de la imagen aquí

Agregamos el archivo Duilib_Static.vcxproj.filters y ahora agregamos este proyecto a la solución duilib . Luego abra DuiLib_Static.vcxproj para compilar:

inserte la descripción de la imagen aquí

De esta forma se genera la librería estática DuiLib_d.lib .

inserte la descripción de la imagen aquí

4.3.5.2 Agregar UILIB_STATIC al preprocesador del proyecto

inserte la descripción de la imagen aquí

4.3.5.3, agregue la biblioteca estática DuiLib_d.lib

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

4.3.5.4 Ocurren los siguientes problemas al volver a compilar

inserte la descripción de la imagen aquí

Modifique la biblioteca de tiempo de ejecución de C++ para la depuración de subprocesos múltiples:
inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

Compilar de nuevo:

inserte la descripción de la imagen aquí

4.3.5.5 Se puede ejecutar en cualquier directorio

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44918090/article/details/131233973
Recomendado
Clasificación