zoukankan      html  css  js  c++  java
  • 对于dll(动态链接库)的理解

      之前,尝试过写过dll,但是对于dll的理解还是不够深刻吧。今天,又加深了对于dll的理解程度,故记下以免以后忘记。

      无论是c还是c++,我们通常先将源文件编译成中间代码,在Windows下是".obj"文件,在linux或Unix下是".o"文件,即目标文件(Object File),这个过程叫做编译(Compile);然后再把生成的目标文件合成可执行文件,这个过程叫做链接(Link)。

      编译时,编译器负责检查语法、函数和变量的声明正确与否,只要检测过关,就将生成目标文件,一般而言,每个源文件都对应一个目标文件。

      链接时,编译器负责链接函数和全局变量。编译器并不关心函数所在的源文件,只关注目标文件,有时因为源文件太多,编译时生成的目标文件很多,导致在链接时需要指定一大堆的目标文件,显然很不方便,这时可以将目标文件打包成一个库文件,Windows下这个库文件就是".dll"文件,Linux下是".a"或".so"文件。

      总之,编译时,我们通常先将源文件编译成目标文件,再对目标文件进行链接操作,程序便由此而诞生。

  • 相关阅读:
    php AppStore内购付款验证
    NodeJS
    Electron 的中文乱码问题
    Flexbox 弹性盒子布局的使用
    springboot整合quartz
    第4章:逆向分析技术--64位软件逆向技术
    第51章:静态反调试技术——API查询
    第51章:静态反调试技术
    第48章:SEH
    第47章:PEB
  • 原文地址:https://www.cnblogs.com/liujunming/p/4386898.html
Copyright © 2011-2022 走看看