静态编译与动态编译的区别

静态编译与动态编译的区别
  动态编译的 可执行文件 需要附带一个的 动态链接库 ,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了 系统资源 。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的 运行库 ,则用动态编译的可执行文件就不能运行。

  静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。


静态lib将导出声明和实现都放在lib中。编译后所有代码都嵌入到宿主程序

动态lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明。编译后只是将导出声明部分编译到宿主程序中,运行时候需要相应的dll文件支持

  lib文件是不对外公开的,不能查看一个编译过后的文件

  有几个选择:

  1。如果你查看有同名的dll文件,可以通过vc自带的depends查看dll接口

  2。通过msdn看你使用的该lib包含的函数名,来查找其对应的头文件,头文件里面有整个lib的函数声明(可能不全)

  3。查看vc或者其他工具安装目录下的src目录,查看函数的代码

  lib文件是二进制文件,所以要查看它的内容,只能反汇编。

  用编程语言,打开lib文件的办法有三个:

  1、在object/library modules使用全路径名;

  2、把*.lib放在VC的Lib目录中

  3、修改project setting的Link->Input中的Addtional library path,加入你的目录。

  LIB文件是库文件(与DLL文件相类似),供其它程序调用的,直接打不开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值