zoukankan      html  css  js  c++  java
  • DLL技术应用03

    DLL技术应用03

     

    让编程改变世界

    Change the world by program


     

    DLL的加载和调用

      [caption id="attachment_2685" align="alignnone" width="500"]DLL的加载和调用 DLL的加载和调用[/caption]  

    静态载入 DLL

      [caption id="attachment_2686" align="alignnone" width="500"]静态载入 DLL 静态载入 DLL[/caption]   静态载入 DLL 的前提是在编译之前已经明确知道要调用 DLL 中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不包含 DLL 函数的代码。 在程序执行时, 利用链接信息加载 DLL 函数代码并在内存中将其链接进入调用程序的执行空间,从而实现了代码的重用。  

    动态载入 DLL

      [caption id="attachment_2687" align="alignnone" width="500"]动态载入 DLL 动态载入 DLL[/caption]  

    方法是:

     
    用 LoadLibrary 函数加载动态链接库到内存,用 GetProcAddress函数动态获得 DLL 函数的入口地址。 当一个 DLL 文件用 LoadLibrary 显式加载后,在任何时刻均可以通过调用 FreeLibrary 函数显式地从内存中把它给卸载。
      动态载入方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪些函数。 动态调用使用的 Windows API 函数主要有3个,分别是LoadLibrary(SafeLoadLibrary)、GetProcAddress和FreeLibrary。 小甲鱼在论坛发帖详细介绍这三个函数的功能,因为无论学习编程还是逆向这是三个函数都是非常常用滴:http://bbs.fishc.com/thread-33485-1-1.html  

    调用 DLL 中的过程和函数

      [caption id="attachment_2688" align="alignnone" width="500"]调用DLL中的过程和函数 调用DLL中的过程和函数[/caption]  

    强化练习

     
    编写一个应用程序,调用上节课所建立的DLL中的Max和Min函数,要求分别使用隐式调用和显式调用来实现。
    参考代码:http://bbs.fishc.com/forum-113-1.html [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/BdsUAwI6rQBZQNBR60d']视频下载[/Downlink]
  • 相关阅读:
    css 三种布局定位
    居中布局注意的要点
    CSS盒子3D模型
    SpringMVC中JSP取不到ModelAndView的数据原因
    如何让 height:100%; 起作用
    css形变
    消除html元素之间空白
    h5移动端网页头部标签模板
    大数据之Hadoop核心之HDFS
    大数据之Hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3847324.html
Copyright © 2011-2022 走看看