静态链接库在链接时,编译器会将 .obj 文件和 .LIB 文件组织成一个 .exe 文件,程序运行时,将全部数据加载到内存。
如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,最直接的一个例子就是双击打开一个软件,要很久才能看到界面。这是静态链接库的一个弊端。
动态链接库有两种加载方式:隐式加载和显示加载。
隐式加载又叫载入时加载,指在主程序载入内存时搜索DLL,并将DLL载入内存。隐式加载也会有静态链接库的问题,如果程序稍大,加载时间就会过长,用户不能接受。
显式加载又叫运行时加载,指主程序在运行过程中需要DLL中的函数时再加载。显式加载是将较大的程序分开加载的,程序运行时只需要将主程序载入内存,软件打开速度快,用户体验好。
隐式加载
首先创建一个工程,命名为 cDemo,添加源文件 main.c,内容如下:
#include
extern int add(int, int); // 也可以是 _declspec(dllimport) int add(int, int);
extern int sub(int, int); // 也可以是 _declspec(dllimport) int sub(int, int);
int main(){
int a=10, b=5;
printf("a+b=%d\n", add(a, b));
printf("a-b=%d\n", sub(a, b));
return 0;
}
找到