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. cocos2d 小游戏

    今天写了一个小游戏,发现看过的代码自己来写还是会经常出错,还是要多自己动手写写哈. 先上几张游戏界面图 void HelloWorld::addTarget() { //首先初始化精灵 CCSprit ...

  2. c#_DropdownList Panel Textbox 控件交互使用,有autopostback和没有的区别

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  3. C# for AUTOCAD ActiveX获取图形对象坐标程序

    C# for AUTOCAD ActiveX获取图形对象坐标程序 using System;using System.Collections.Generic;using System.Componen ...

  4. 解决myeclipse过期问题

    一般myeclise使用期限为30天,超过之后,会频繁的提醒你,购买软件,很讨厌,有个这个小工具,,以后再也不怕啦!!! 使用方法: 1:将这个类导入到myeclipse包中 2:运行main方法,提 ...

  5. [转]ORACLE 异常错误处理

    本文转自:http://www.cnblogs.com/soundcode/archive/2012/01/10/2318385.html 本篇主要内容如下: 5.1 异常处理概念 5.1.1 预定义 ...

  6. 怎样安装WIN7系统

    如何避免win7自动创建200M隐藏分区 1 安装win7到选择安装到哪个分区的时候,不能选择 unallocated diskspace ,也不能选 delete 已有的分区(例如C盘)安全的做法是 ...

  7. 【Slickflow学习】.NET开源工作流项目转换(二)

    第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-项目转换 上一篇文章里说了1.2版本的下载,下载解压后 ...

  8. oracle交集,并集,差集

    引自:http://www.2cto.com/database/201308/238777.html [sql] create table test1 ( name ), NN ) ); insert ...

  9. OpenWebFlow0.9用户手册与设计说明

    1.    OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎.Activiti (官方网站http://activiti.org/,代码托管在https://g ...

  10. spring beans的写入工具——spring-beans-writer

    spring-beans-writer是我曾经为动态生成spring beans配置文件做的一个写入工具,托管地址: https://github.com/bluejoe2008/spring-bea ...