La création et l'utilisation de bibliothèque dynamique sous Windows

Pour résoudre les deux problèmes de gaspillage d'espace et de difficulté de mise à jour, le moyen le plus simple est de séparer les modules du programme pour former des fichiers indépendants, plutôt que de les lier statiquement. Pour faire simple, le programme cible qui compose le programme n'est pas lié, et le lien est effectué lorsque le programme est en cours d'exécution, c'est-à-dire que l'ensemble du processus de liaison est reporté à l'exécution. C'est l'idée de base de la liaison dynamique .

Comment le créer?

1. Créez un nouveau projet mydll

2. Ajoutez le fichier mydll.h et mydll.c

Ajoutez le contenu suivant:

#include<stdio.h>

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

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

 

Comment configurer la bibliothèque statique?

Tout d'abord, cliquez avec le bouton droit sur le projet -> Propriétés -> Général -> Type de configuration -> Liste déroulante à droite pour sélectionner Bibliothèque dynamique -> Application

 

Régénérez la solution, après avoir généré le fichier .lib et le fichier .dll

Le fichier .lib généré par la bibliothèque dynamique est différent du fichier .lib généré par la bibliothèque statique

Le fichier .lib dans la bibliothèque dynamique ne stockera que la déclaration de certaines fonctions exportées et la déclaration de certaines variables, et l'implémentation spécifique est stockée dans le fichier .dll.

De même, nous créons un nouveau projet pour le tester.

Copiez le fichier .lib, le fichier .dll et mydll.h dans le projet

Ajoutez ces deux fichiers au projet, cette fois vous pouvez utiliser #pragma comment (lib, "./ mydll.lib") (ajoutez simplement le chemin du fichier .lib plus tard, il trouvera automatiquement le .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;
}

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42596333/article/details/104589061
conseillé
Classement