、Dll文件的编写 调用 说明
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文件的编写 调用 说明的更多相关文章
- C# 创建Dll文件供程序调用方法
C# 创建Dll文件供程序调用方法 使用C#创建动态Dll文件方法: 1. 在VS2017环境下,新建-项目-选择类库类型: 2. 新创建一个.cs文件(如test.cs),编写代码如下: usin ...
- Delphi 使用之dll文件生成与调用
DLL是Dynamic-Link Libraries(动态链接库)的缩写,库里面是一些可执行的模块以及资源(如位图.图标等).可以认为DLL和EXE基本上是一回事,只是DLL不能直接执行,而必须由应用 ...
- Delphi DLL文件的动态调用
樊伟胜
- Delphi DLL文件的静态调用
- .dll 文件编写和使用
1.基本概念 dll(dynamic-link library),动态链接库,是微软实现共享函数库的一种方式.动态链接,就是把一些常用的函数代码制作成dll文件,当某个程序调用到dll中的某个函数的时 ...
- LabVIEW如何方便地调用DLL文件
转自:http://bbs.elecfans.com/jishu_469502_1_1.html LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用.比 ...
- C++ exe调用dll文件
生成dll程序 extern "C"_declspec(dllexport) void maopao(int *p,int count);void maopao(int *p,in ...
- 获取DLL的文件路径以及调用DLL的文件路径
如何在DLL中,获取DLL本身的路径以及调用DLL的文件的路径呢?主要通过GetModuleFileName(HMODULEhModule,LPTSTR lpFilename,DWORD nSize) ...
- Delphi 封装Frame到Dll文件
做项目的时候,发现这个Frame很好用,为了省空间.调用和修改方便,就将Frame封装到dll(动态链接库)里面,确实很好使. 效果图如下: 上图是临时测试用的,忘了将Frame的align设置成al ...
随机推荐
- Getting Started With Python Internals
http://akaptur.com/blog/2014/08/03/getting-started-with-python-internals/
- 编程之linux与win区别
换行符在Linux和Windows下的区别 一.区别 换行符: 1.windows中的换行符是\r\n, 2. linux/unix下的换行符是\n. 其中: 回车符:\r=0x0d (13) ret ...
- if elseif else
1)if,else if需要接判断表达式,只有在满足条件的时候执行而else语句是在前面条件都不满足的时候才能执行(2) 一个if...else if...else语句中可以有多个else if语句, ...
- Fixflow引擎解析(二)(模型) - BPMN2.0读写
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- 分享一个字数限制和统计的UITextView分类方法
- (NSUInteger)letterCountWithLimits:(NSInteger)limits { NSString *toBeString = self.text; NSUInteger ...
- 全新的手势,侧滑返回、全局右滑返回都OUT啦!
前言 Android快速开发框架-ZBLibrary 最近将以前的 全局右滑返回 手势功能改成了 底部左右滑动手势. 为什么呢?为了解决滑动返回手势的问题. 目前有3种滑动返回手势 一.侧滑返回 代表 ...
- 明天参加GDG devfest
明天就可以第二次去参加devfest了,还记得去年去的时候是个啥也听不懂的小白,希望今年能够收获更多,结识更多大牛和志同道合的伙伴.
- easyui-validatebox验证 radio
添加规则 $.extend($.fn.validatebox.defaults.rules, { requireRadio: { validator: function(value, param){ ...
- [MSDN]使用 REST 处理文件夹和文件
msdn: http://msdn.microsoft.com/zh-cn/library/dn292553.aspx 了解如何使用 SharePoint 2013 REST 界面对文件夹和文件执行基 ...
- 比较ASP生成静态HTML文件的几种方法
将动态页面转换生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录(特别是对接受动态参数的页面).前台访问时,脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度. 当然,凡事 ...