动态链接库与静态链接库:

1.静态链接库:

创建:
滴水逆向——DLL随笔
新建一个类滴水逆向——DLL随笔
分别在源文件和头文件中填加程序和声明:
滴水逆向——DLL随笔
滴水逆向——DLL随笔
F7编译,然后查找项目下的 TestLib.lib(debug文件夹下)和LibTools.h文件,复制到需要使用的项目下。
滴水逆向——DLL随笔
滴水逆向——DLL随笔
然后创建一个普通的控制台项目,将刚才的lib文件和.h文件复制到该项目中
滴水逆向——DLL随笔
滴水逆向——DLL随笔
现在就可以使用静态链接库中定义的函数了。
方式二:
滴水逆向——DLL随笔
滴水逆向——DLL随笔
滴水逆向——DLL随笔
滴水逆向——DLL随笔
函数的声明在.h文件中;函数的实现在.lib文件中。
滴水逆向——DLL随笔
静态链接库会编译在exe文件中,从地址来看是0040xxxx。没办法分清是自己写的还是静态链接库。
静态链接库缺点:
与模块化无关,二进制代码静态编译到exe文件中。
滴水逆向——DLL随笔
当静态链接库中的函数需要修改时,修改完毕后需要重新编译整个项目。

2. 动态链接库

创建DLL:
滴水逆向——DLL随笔
创建一个class:
滴水逆向——DLL随笔
分别在cpp文件和h文件中添加函数和函数声明
滴水逆向——DLL随笔
滴水逆向——DLL随笔
滴水逆向——DLL随笔
如果去掉 extern “C” 不指定按照C语言方式,就会按照C++方式。
滴水逆向——DLL随笔
滴水逆向——DLL随笔
加上 extern “C”
滴水逆向——DLL随笔
滴水逆向——DLL随笔
动态链接库,函数的实现在.dll文件中。(静态链接库函数的实现在.lib文件中。)
编译,然后将lib文件和dll文件复制到项目路径下。
滴水逆向——DLL随笔
滴水逆向——DLL随笔
__stdcall 表示内平栈。默认为_cdcall(外平栈)
然后再使用动态链接库中的函数,注意:先要将刚才settings->LINK下的lib删除。
滴水逆向——DLL随笔
滴水逆向——DLL随笔
滴水逆向——DLL随笔
我们发现它的地址不在exe中。需要修改dll中的函数时,直接修改dll中的函数,不用再重新编译。
方式二:
滴水逆向——DLL随笔
滴水逆向——DLL随笔
滴水逆向——DLL随笔
增加cpp和h文件
添加.def文件
滴水逆向——DLL随笔
然后编译,发现减法的函数名被隐藏
滴水逆向——DLL随笔

相关文章:

  • 2022-12-23
  • 2021-09-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-29
  • 2021-08-20
  • 2021-06-30
  • 2022-01-01
  • 2021-04-27
  • 2021-08-04
  • 2021-05-29
相关资源
相似解决方案