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. [Effective C++ --013]以对象管理资源

    这一节基本讲述的是将资源放进管理对象,防止忘记释放资源. 1.一般New和Delete使用场景 void fun() { SimpleClass* pSimpleClass1 = new Simple ...

  2. 标准I/O库之流和FILE对象

    对于标准I/O库,它们的操作是围绕流(stream)进行的.当用标准I/O库打开或创建一个文件时,我们已使一个流与一个文件相关联. 对于ASCII字符集,一个字符用一个字节表示.对于国际字符集,一个字 ...

  3. iOS 手动打造JSON Model转换库

    前一段时间学习了Runtime,对类和对象的结构,和一些消息转发有一些自己的理解,现在希望简单的应用下,就决定自己写一个简单的JSON与Model的相互转化,现在总结下. 建议查看 参考资料 :Run ...

  4. (原创)openvswitch实验连载1-fedora 17下安装openvswitch

    1 软件安装 1.1测试环境和网络拓朴 大部分朋友估计也没有一个真实环境来完全整个的测试,所以我也是使用了在一台PC机上使用Vmware Workstation的方式来进行实验.总体结构是在PC机上安 ...

  5. List中的get(i)

    List中的get(i)方法是获取List中的第i个对象吗 是第i+1个对象.List是从0开始的 List是有序的可重复的集合接口

  6. C# 接口的隐式与显示实现【转】

    以前在用到接口时,从来没注意到接口分为隐式实现与显示实现.昨天在浏览博客时看到相关内容,现在根据自己的理解记录一下,方便日后碰到的时候温习温习.通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的 ...

  7. Python(2.7.6) copy - 浅拷贝与深拷贝

    Python 标准库的 copy 模块提供了对象拷贝的功能. copy 模块中有两个函数 copy 和 deepcopy,分别支持浅拷贝与深拷贝. copy_demo.py import copy c ...

  8. scala学习笔记:各种奇怪的写法

    Unit函数的定义: def foo()={println("hi")} 等号可以省略: def foo(){println("hi")} update方法: ...

  9. ASP大数据量使用GetRows()提升速度

    抽取10万条数据,Access数据库,GetRows() 现有10W条数据,Access数据库保存 通过正常提取: <% Set conn= Server.CreateObject(" ...

  10. react native for Android (make you first android app)

    第一步:如果你的电脑安装了node,恭喜你,第一步完成:如果没有,那请先安装node. 第二步:安装react-native-cli,在windows下需要从github签下来的react-nativ ...