La creación y uso de una biblioteca dinámica en Windows.

Para solucionar los dos problemas de desperdicio de espacio y dificultad de actualización, la forma más sencilla es separar los módulos del programa para formar archivos independientes, en lugar de vincularlos estáticamente. En pocas palabras, el programa de destino que compone el programa no está vinculado, y el vínculo se realiza cuando el programa se está ejecutando, es decir, todo el proceso de vinculación se pospone al tiempo de ejecución. Esta es la idea básica de la vinculación dinámica .

¿Cómo crearlo?

1. Cree un nuevo proyecto mydll

2. Agregue el archivo mydll.h y mydll.c

Agrega el siguiente contenido:

#include<stdio.h>

//导入函数  智能在当前项目中使用
//int mySub(int a,int b);

//导出函数  能在项目外使用  __declspec特殊声明
__declspec (dllexport) int mySub(int a,int b);

 

¿Cómo configurar la biblioteca estática?

Primero, haga clic con el botón derecho en el proyecto -> Propiedades -> General -> Tipo de configuración -> Menú desplegable a la derecha para seleccionar Biblioteca dinámica -> Aplicación

 

Regenere la solución, después de generar el archivo .lib y el archivo .dll

El archivo .lib generado por la biblioteca dinámica es diferente del archivo .lib generado por la biblioteca estática

El archivo .lib de la biblioteca dinámica solo almacenará la declaración de algunas funciones exportadas y la declaración de algunas variables, y la implementación específica se almacena en el archivo .dll.

Del mismo modo, creamos un nuevo proyecto para probarlo.

Copie el archivo .lib, el archivo .dll y mydll.h al proyecto

Agregue esos dos archivos al proyecto, esta vez puede usar #pragma comment (lib, "./ mydll.lib") (simplemente agregue la ruta del archivo .lib más tarde, automáticamente encontrará el .dll)

#include<stdio.h>
#include"mydll.h"

#pragma comment(lib,"./mydll.lib")

int main()
{
	
	int ret = mySub(20,10);
	printf("ret = %d\n",ret);
	return 0;
}

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_42596333/article/details/104589061
Recomendado
Clasificación