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.
  • 相关阅读:
    pytorch基础(4)-----搭建模型网络的两种方法
    Java
    Tools
    Maven
    Java
    DevOps
    Linux
    Java
    Java
    Nutch 使用总结
  • 原文地址:https://www.cnblogs.com/GodPan/p/3390117.html
Copyright © 2011-2022 走看看