1>新建Dll文件TestLib.dll

新建Unit文件U_TestFunc

U_TestFunc代码如下:

unit U_TestFunc;

interface

uses //尽可能的少uses这样会缩小dll的体积

  SysUtils;

//求和

function Sum(x1,x2: Integer): Integer; stdcall

implementation

function Sum(x1,x2: Integer): Integer; stdcall

begin

  Result := x1+x2;

end;

end.

TestLib代码如下:

library TestLib;

uses    SysUtils,

U_TestFunc in 'U_TestFunc.pas';

{$R *.res}

exports

Sum;

begin

end.

2>调用方法  源码如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Dialogs, StdCtrls, Buttons;

type

  TForm1 = class(TForm)

  Edit1: TEdit;

BitBtn1: TBitBtn;

Edit2: TEdit;

BitBtn2: TBitBtn;

   procedure BitBtn1Click(Sender: TObject);

   procedure BitBtn2Click(Sender: TObject);

private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.dfm}

  function Sum(a1,a2: Integer): Integer; stdcall; external 'C:\TestLib.dll';

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  //if FileExists('C:\TestLib.dll') then  这里感觉这两个函数没有什么区别,文件在本地不在本地貌似效果都一样。

   if LocaleFileExists('C:\TestLib.dll') then

        Edit1.Text := IntToStr(Sum(100,200))

  else

        ShowMessage('文件不存在!');

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

type

TIntFunc = function(a1,a2: Integer): Integer; stdcall;

var

Th: THandle;

Tf: TIntFunc;

begin

Th := LoadLibrary('C:\TestLib.dll');

 if Th>0 then

  begin

try

@Tf := GetProcAddress(Th, PAnsiChar('Sum'));

if @Tf<>nil then

begin

Edit2.Text := IntToStr(Tf(100,200));

end else

ShowMessage('Sum函数没有找到!');

finally

FreeLibrary(Th); //释放Dll

end;

end else

ShowMessage('TestLib.dll文件没有找到!');

end;

end.

、Dll文件的编写 调用 说明的更多相关文章

  1. C# 创建Dll文件供程序调用方法

    C# 创建Dll文件供程序调用方法 使用C#创建动态Dll文件方法: 1.  在VS2017环境下,新建-项目-选择类库类型: 2. 新创建一个.cs文件(如test.cs),编写代码如下: usin ...

  2. Delphi 使用之dll文件生成与调用

    DLL是Dynamic-Link Libraries(动态链接库)的缩写,库里面是一些可执行的模块以及资源(如位图.图标等).可以认为DLL和EXE基本上是一回事,只是DLL不能直接执行,而必须由应用 ...

  3. Delphi DLL文件的动态调用

    樊伟胜

  4. Delphi DLL文件的静态调用

  5. .dll 文件编写和使用

    1.基本概念 dll(dynamic-link library),动态链接库,是微软实现共享函数库的一种方式.动态链接,就是把一些常用的函数代码制作成dll文件,当某个程序调用到dll中的某个函数的时 ...

  6. LabVIEW如何方便地调用DLL文件

    转自:http://bbs.elecfans.com/jishu_469502_1_1.html   LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用.比 ...

  7. C++ exe调用dll文件

    生成dll程序 extern "C"_declspec(dllexport) void maopao(int *p,int count);void maopao(int *p,in ...

  8. 获取DLL的文件路径以及调用DLL的文件路径

    如何在DLL中,获取DLL本身的路径以及调用DLL的文件的路径呢?主要通过GetModuleFileName(HMODULEhModule,LPTSTR lpFilename,DWORD nSize) ...

  9. Delphi 封装Frame到Dll文件

    做项目的时候,发现这个Frame很好用,为了省空间.调用和修改方便,就将Frame封装到dll(动态链接库)里面,确实很好使. 效果图如下: 上图是临时测试用的,忘了将Frame的align设置成al ...

随机推荐

  1. 学习笔记之Linux开发(C语言)

    第二章 Linux下C程序开发环境 vi编辑器 gcc 第三章 Linux基础 Kernel Shell 第三章 Linux技术实验 ls -l 以长格式的形式查看当前目录下所有可见文件的详细属性. ...

  2. 傲娇Android二三事之操蛋的开发日记(第一回)

    武宗元年 十一月初四 霾 今日魔都,依旧仙雾环绕,仿佛蓬莱落凡尘.望着470这个鲜红的AQI修仙指数,贫道不禁吟道,“正是修仙好光景,雾霾时节又逢君”.但在这个只修bug,不修仙的时代,路上的行人都步 ...

  3. linux文件 编辑常用 inux手把手vi ---针对文件操作

    命令语法 说明 使用频率(1:常用;2一般:3:偶尔) 1.VI编辑器的启动与退出 VI编辑器的启动与退出 vi  file1 新建一个文本文件名为file1 :q 退出,如果对缓存去进行过修改,则提 ...

  4. android 开源 OCR 项目 及手写识别

    http://blog.csdn.net/archfree/article/details/6023676 1)一个为Android平台,将识别由手机的相机拍摄的图像文本应用程序. http://co ...

  5. Linux SPI框架(下)

    分类: Linux驱动程序2012-07-11 20:44 3006人阅读 评论(2) 收藏 举报 linuxstructlistclassdelayprocessing 水平有限,描述不当之处还请之 ...

  6. posix thread互斥量

    互斥量 互斥量(Mutex)是“mutual exclusion”的缩写.互斥量是实现线程同步,和保护同时写共享数据的主要方法.使用互斥量的典型顺序如下:1. 创建和初始一个互斥量 2. 多个线程尝试 ...

  7. C#前端頁面判斷控件

    var chbClass = document.getElementById("<%=DDL_CheckboxUserClass1.ClientID %>" + &qu ...

  8. SqlBulkCopy 数据批量操作使用的类

    private void SqlBulkCopyByDataTable(string connectionString,string TableName,DataTable dt) { using ( ...

  9. 分析Redis架构设计

    http://blog.csdn.net/a600423444/article/details/8944601 一.前言 因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场 ...

  10. 20160509-hibernate--继承映射

    继承映射 对象模型(Java类结构) 一个类继承体系一张表(subclass)(表结构) 1.一个类继承体系一张表(subclass)(映射文件) <class name="Emplo ...