1.静态库使用比较简单,就两步

@1包含静态库头文件#include "文件名"

@2预处理加载静态库 #pragma comment(lib,"库文件名")

2.再看动态库

@1首先得有动态库文件,将动态库文件放在源码目录(不然后面加载得传入文件路径),这是我的动态库源文件内容

复制代码

 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<windows.h> 4  5 //导出函数,加载的使用可以使用 6 _declspec(dllexport) void popWindow() 7 { 8     MessageBoxA(0, "你好,世界", "唐嫣", 1); 9 }10 11 _declspec(dllexport) int add(int a, int b)12 {13     return a + b;14 }

复制代码

 

@2包含windows头文件#include<windows.h>

#include<stdio.h>#include<stdlib.h>#include<windows.h>

 

@3声明指向要调用的函数的函数指针

//定义函数指针来调用动态库,typedef简化函数指针类型定义
typedef void(*ppop)();
typedef int(*padd)(int, int);

@4加载动态库

HMODULE mydll = LoadLibraryA("动态库.dll");

@5调用动态库模块函数

ppop pw;//定义弹窗函数指针
pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址

3.下面是调用动态库文件的全部源码

复制代码

 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<windows.h> 4  5 //定义函数指针来调用动态库,typedef简化函数指针类型定义 6 typedef void(*ppop)(); 7 typedef int(*padd)(int, int); 8  9 10 void main()11 {12     HMODULE mydll = LoadLibraryA("动态库.dll");13     if (mydll == NULL)14     {15         printf("动态库加载失败");16     }17     else18     {19         //弹窗函数调用20         ppop pw;//定义弹窗函数指针21         pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址22         if (pw != NULL)23         {24             pw();//调用25         }26 27         //求和函数调用28         padd pa;29         pa = (padd)GetProcAddress(mydll, "add");30         if (pa != NULL)31         {32             int m = pa(13, 16);33             printf("%d\n", m);34         }35             36     }37 }

复制代码

4.查看运行结果,可见调用成功。