• 动态加载和静态加载


    动态加载:

    1:灵活,可以在需要的时候用LoadLibrary进行加载,在不需要的时候用FreeLibrary进行卸载这样可以不必占用内存
    2:可以在没有dll时候发现,而不致程序报错。
    3:加载程序中有条件才运行的库。
    4:热更新,在不停止程序的前提下进行更新
    5:复杂一些,需要显示获得函数地址
    6:dll没有对应的lib文件,此时只能进行动态加载
     

    静态加载:

    1:简单方便
    2:没有dll时,系统报错
    3:加载运行很久的库
    4:dll必需有相应的lib文件

    加载方法:
    1、确保有a.dll和a.lib,两个文件都有的话可以用静态加载的方式。
    2、在.cpp文件中通过#pragma comment(lib, "a.lib") 加载lib,并包含相应的头文件,就可以使用dll中的函数了~
     
          所谓"程序库",简单说,就是包含了数据和执行码的文件其不能单独执行,可以作为其它执行程序的一部分,来完成执行功能。库的存在,可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。 
          程序库可分三类:静态库,共享库和动态加载库。 
          静态库,是在执行程序运行前就已经加入到执行码中,在物理上成为执行程序的一部分共享库,是在执行程序启动时加载到执行程序中,可以被多个执行程序共享使用动态加载库,其实并不是一种真正的库类型,应该是一种库的使用技术,应用程序可以在运行过程中随时加载和使用库。 
         建议库开发人员创建共享库,比较明显的优势在于库是独立的,便于维护和更新;而静态库的更新比较麻烦,一般不做推荐。然而,它们又各有优点,后面会讲到。在C++编程中,要使用动态加载技术,需要参考文章"C++ dlopen MINI-Howto"。 

          静态库可以认为是一些目标代码的集合。按照习惯,一般以".a"做为文件后缀名。使用ar(archiver)命令可以创建静态库。因为共享库有着更大的优势,静态库已经不被经常使用。但静态库使用简单,仍有使用的余地,并会一直存在。 
         静态库在应用程序生成时,可以不必再编译,节省再编译时间。但在编译器越来越快的今天,这一点似乎已不重要。如果其他开发人员要使用你的代码,而你又不想给其源码,提供静态库是一种选择。从理论上讲,应用程序使用了静态库,要比使用动态加载库速度快1-5%,但由于莫名的原因,实际上可能并非如此。由此看来,除了使用方便外,静态库可能并非一种好的选择。 
     
  • 相关阅读:
    win7下命令行添加系统服务
    java执行cmd命令
    grails-BuildConfig.groovy中grails.war.resources
    密码学
    Grails框架优劣势
    groovy+idea+Maven项目加载自身jar包
    cmd查看我的电脑盘符和文件
    MySQL insert插入
    MySQL截取字符串函数方法
    mysql 替换语句
  • 原文地址:https://www.cnblogs.com/xiangtingshen/p/10979330.html
Copyright © 2020-2023  润新知