Red de conocimiento informático - Material del sitio web - ¿Cómo crear una biblioteca de enlaces dinámicos?

¿Cómo crear una biblioteca de enlaces dinámicos?

Pasos para crear una biblioteca de vínculos dinámicos:

1. Cree una biblioteca de vínculos dinámicos que no sea MFC

DLL

1. p>- gt;

Nuevo

-gt;

Opciones de proyecto, seleccione Win32

Dynamic-Link

Biblioteca

-gt;muestra

proyecto

-gt;Nombre del proyecto: DllDemo

2. un nuevo archivo .h DllDemo. h file DllDemo.h

El siguiente es el fragmento de referencia:

#ifdefDllDemoo_EXPORTS

#defineDllAPI__declspec(dllexport)

#else

#defineDllAPI__declspec(dllimport)

extern "C" // Compilar tal cual

{

DllAPIint__stdcallMax(inta, intb); //__stdcall usa lenguajes que no son C/C y puede llamar a API

}

#endif

3. Agregue el archivo DllDemo.h a DllDemo .cpp e implementar la función Max (int, int)

El siguiente es un fragmento de referencia:

#include "DllDemo.h"

DllAPIint__stdcallMax(inta , intb)

{

if(a==b)

returnNULL;

elseif(agt;b)

returna;

else

returnb;

}

4. Compile el programa para generar una biblioteca de enlaces dinámicos

2. Utilice la biblioteca de vínculos dinámicos para la creación de archivos .def DllDemo.dll.

1. Elimine el archivo DllDemo.h en el proyecto DllDemo.

2. En el archivo de encabezado del archivo DllDemo.cpp, elimine la instrucción

#include

DllDemo.h.

3. Agregue un archivo de texto llamado DllDemo.def al proyecto y escriba la siguiente declaración:

BIBLIOTECA

MyDll

EXPORTACIONES.

Max@1

4. Compile el programa para generar una biblioteca de enlaces dinámicos.

Pasos para llamar al enlace dinámico:

I. Llamada implícita

1.

Compilar el proyecto DllCnslTest

2.

Copie los archivos DllDemo.dll y DllDemo.lib al directorio donde se encuentra el proyecto DllCnslTest

3.

En DllDemo.dll y DllDemo. .lib Agregar biblioteca de vínculos dinámicos en .

Agregue la siguiente declaración en DllCnslTest.h:

El siguiente es un fragmento de referencia:

#defineDllAPI__declspec(dllimport)

# pragmacomment( lib, "DllDemo.lib") /// Cuando el editor vincula el archivo DllDemo.lib, vincula el archivo DllDemo.lib. Cuando el editor enlace, enlace al archivo lib

extern "C"

{

DllAPIint__stdcallMax(inta, intb);

}

4. Agregue el siguiente contenido a la declaración del archivo DllCnslTest.cpp:

El siguiente es el fragmento citado:

#include "DllCnslTest.h" // o #include "DllDemo.h"

voidmain()

{

intvalue;

value=Max(2, 9) ;

printf("TheMaxvalueisd

", valor);

}

5. Compile y genere la aplicación DllCnslTest. exe

Dos llamadas explícitas

1.

Construya el proyecto DllWinTest

2. DllDemo.dll se copia al directorio donde se encuentra el proyecto DllWinTest o al directorio del sistema de Windows.

3.

Utilice el pequeño programa Dumpbin.exe en vc/bin para ver la estructura de la función en el archivo DLL (DllDemo.dll).

4.

Utilice la palabra clave de definición de tipo typedef para definir un puntero al mismo prototipo de función en la DLL.

Ejemplo:

El siguiente es un fragmento de referencia:

typedefint(*lpMax)(inta, intb); //Esta declaración se puede colocar en . h

5.

Cargue la DLL en la aplicación actual a través de LoadLibray() y devuelva el identificador del archivo DLL actual del archivo DLL actual.

Ejemplo:

La siguiente es una referencia:

HINSTANCEhDll //Declarar el identificador del archivo de instancia Dll

hDll= LoadLibrary("DllDemo .dll"); //Importar biblioteca de vínculos dinámicos DllDemo.dll

6,

A través de la función GetLibray(), la DLL se carga en la aplicación actual y se devuelve el identificador del archivo DLL actual. p>

Obtenga el puntero de función de la aplicación importada a través de la función GetProcAddress().

Ejemplo:

El siguiente es un fragmento de referencia:

lpMaxMax;

Max=(lpMax)GetProcAddress(hDLL, "Max ") ;

intvalue;

value=Max(2,9);

printf("TheMaxvalueisd", valor);

7,

Después de llamar a esta función, use FreeLibrary() para descargar el archivo DLL.

FreeLibrary(hDll);

8.

Compilar y generar la aplicación DllWinTest.exe

Nota: Al compilar la aplicación, no es Utilice el archivo Lib correspondiente para enlaces explícitos.

Se recomienda comprar la "Serie de edición en lenguaje C" editada por el profesor Tan Haoqiang para fines de investigación.