静态编译、动态编译、静态链接库、动态链接库
(转载 来自https://www.cnblogs.com/lisuyun/p/3953589.html) 1.静态编译: 编译器在编译可执行文件时,把需要用到的对应动态链接库(.so或.ilb)中的部分提取出来,链接到可执行文件中去, 使可执行文件在运行时不需要依赖于动态链接库. 2.动态编译: 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一 方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接 库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文 件就不能运行。 静态编译: 静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序。 动态编译: 动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时 候需要相应的dll文件支持。 动态链接库: 创建一个动态链接库,会生成x.dll,x.lib 动态链接库有两种加载方式: 1.一种是静态加载,就是在编译的时候就载入动态链接库。此种方法可调用类方法. 可执行程序静态加载动态链接库需要三个文件 x.dll, x.lib, x.h 可执行程序的头文件加入: #include