动态加载:
1:灵活,能够在须要的时候用
LoadLibrary进行加载,在不须要的时候用
FreeLibrary进行卸载,
这样能够没必要占用内存。
2:能够在没有dll时候发现,而不致程序报错。
3:加载程序中有条件才运行的库。
4:
热更新,在不中止程序的前提下进行更新。
5:
复杂一些,须要显示得到函数地址。
6:
dll没有对应的lib文件,此时只能进行动态加载。
静态加载:
1:简单方便
2:
没有dll时,系统报错
3:加载运行好久的库
4:
dll必需有相应的lib文件
加载方法:
一、确保有
a.dll和a.lib,两个文件都有的话能够用静态加载的方式。
二、在.cpp文件中经过#pragma comment(lib, "a.lib") 加载lib,并包含相应的头文件,就可使用dll中的函数了~
二、在.cpp文件中经过#pragma comment(lib, "a.lib") 加载lib,并包含相应的头文件,就可使用dll中的函数了~
所谓"程序库",简单说,
就是包含了数据和执行码的文件。
其不能单独执行,能够做为其它执行程序的一部分,来完成执行功能。库的存在,可使得程序模块化,能够加快程序的再编译,能够实现代码重用,可使得程序便于升级。
程序库可分三类: 静态库,共享库和动态加载库。
静态库,是在 执行程序运行前就已经加入到执行码中,在物理上成为执行程序的一部分; 共享库,是在执行程序启动时加载到执行程序中,能够被多个执行程序共享使用。 动态加载库,其实并非一种真正的库类型,应该是一种库的使用技术,应用程序能够在运行过程当中随时加载和使用库。
建议库开发人员建立共享库,比较明显的优点在于库是独立的,便于维护和更新;而静态库的更新比较麻烦,通常不作推荐。然而,它们又各有优势,后面会讲到。在C++编程中,要使用动态加载技术,须要参考文章"C++ dlopen MINI-Howto"。
静态库能够认为是一些目标代码的集合。按照习惯,通常以".a"作为文件后缀名。使用ar(archiver)命令能够建立静态库。由于共享库有着更大的优点,静态库已经不被常常使用。但静态库使用简单,仍有使用的余地,并会一直存在。
静态库在应用程序生成时,能够没必要再编译,节省再编译时间。但在编译器愈来愈快的今天,这一点彷佛已不重要。若是其余开发人员要使用你的代码,而你又不想给其源码,提供静态库是一种选择。 从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快1-5%,但因为莫名的缘由,实际上可能并不是如此。由此看来,除了使用方便外,静态库可能并不是一种好的选择。
程序库可分三类: 静态库,共享库和动态加载库。
静态库,是在 执行程序运行前就已经加入到执行码中,在物理上成为执行程序的一部分; 共享库,是在执行程序启动时加载到执行程序中,能够被多个执行程序共享使用。 动态加载库,其实并非一种真正的库类型,应该是一种库的使用技术,应用程序能够在运行过程当中随时加载和使用库。
建议库开发人员建立共享库,比较明显的优点在于库是独立的,便于维护和更新;而静态库的更新比较麻烦,通常不作推荐。然而,它们又各有优势,后面会讲到。在C++编程中,要使用动态加载技术,须要参考文章"C++ dlopen MINI-Howto"。
静态库能够认为是一些目标代码的集合。按照习惯,通常以".a"作为文件后缀名。使用ar(archiver)命令能够建立静态库。由于共享库有着更大的优点,静态库已经不被常常使用。但静态库使用简单,仍有使用的余地,并会一直存在。
静态库在应用程序生成时,能够没必要再编译,节省再编译时间。但在编译器愈来愈快的今天,这一点彷佛已不重要。若是其余开发人员要使用你的代码,而你又不想给其源码,提供静态库是一种选择。 从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快1-5%,但因为莫名的缘由,实际上可能并不是如此。由此看来,除了使用方便外,静态库可能并不是一种好的选择。