zoukankan      html  css  js  c++  java
  • Delphi函数指针,用于加载DLL

    要点:

    1.DLL用exports加函数名表示导出这个函数

    2.Assigned函数判断参数释放为nil,也就是是否存在

    3.LoadLibrary用来加载一个DLL文件,参数为完整路径(同一目录下,可只写DLL文件名)。使用完了,要记得用FreeLibrary关闭这个打开的句柄

    4.GetProcAddress判断dll中,是否存在某个导出的函数,返回值是这个函数的句柄。

    5.type PMyFunc = procedure (para : Integer); 表示定义了一个名字叫PMyFunc的过程,只有1个Integer型参数

    program MyPoint;  //指针详解
    {$APPTYPE CONSOLE}
    uses
      SysUtils,windows,Generics.Collections ;
    
    {函数指针,用于加载DLL}
    procedure MyFunc6();
    {TianPan.dll文件源码如下:
    procedure MyADDFunc(TemNo : Integer);
    begin
      Writeln(TemNo*2);
    end;
    exports
    MyADDFunc;
    }
    type PMyFunc = procedure (para : Integer);//函数原型
    var
      MyFunc : PMyFunc;//定义函数指针
      MyHandle : HMODULE;//定义dll句柄
    begin
      MyHandle := LoadLibrary('TianPan.dll');
      if  MyHandle > 0  then   //如果dll存在
      begin
       MyFunc := GetProcAddress(MyHandle, 'MyADDFunc');//获取地址
        if Assigned(MyFunc) then //dll中函数存在
          MyFunc(2)       //调用函数
        else
        Writeln('DLL中的MyADDFunc函数不存在!');
      end else
      Writeln('DLL不存在!');
      FreeLibrary(MyHandle); //释放句柄
    end;
    
    {main主函数}
    begin
     MyFunc6();
     Readln;//回车退出
    end.
  • 相关阅读:
    jvm系列(二):JVM内存结构
    jvm系列(一):java类的加载机制
    配置中心选型
    抓取某一个网站整站的记录
    jvm系列(五):tomcat性能调优和性能监控(visualvm)
    网站文件系统发展&&分布式文件系统fastDFS
    spring aop
    禁止页面后退JS(兼容各浏览器)
    spring ioc
    spring帝国-开篇
  • 原文地址:https://www.cnblogs.com/GodPan/p/3390117.html
Copyright © 2011-2022 走看看