、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 ...
随机推荐
- cocos2d 小游戏
今天写了一个小游戏,发现看过的代码自己来写还是会经常出错,还是要多自己动手写写哈. 先上几张游戏界面图 void HelloWorld::addTarget() { //首先初始化精灵 CCSprit ...
- c#_DropdownList Panel Textbox 控件交互使用,有autopostback和没有的区别
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- C# for AUTOCAD ActiveX获取图形对象坐标程序
C# for AUTOCAD ActiveX获取图形对象坐标程序 using System;using System.Collections.Generic;using System.Componen ...
- 解决myeclipse过期问题
一般myeclise使用期限为30天,超过之后,会频繁的提醒你,购买软件,很讨厌,有个这个小工具,,以后再也不怕啦!!! 使用方法: 1:将这个类导入到myeclipse包中 2:运行main方法,提 ...
- [转]ORACLE 异常错误处理
本文转自:http://www.cnblogs.com/soundcode/archive/2012/01/10/2318385.html 本篇主要内容如下: 5.1 异常处理概念 5.1.1 预定义 ...
- 怎样安装WIN7系统
如何避免win7自动创建200M隐藏分区 1 安装win7到选择安装到哪个分区的时候,不能选择 unallocated diskspace ,也不能选 delete 已有的分区(例如C盘)安全的做法是 ...
- 【Slickflow学习】.NET开源工作流项目转换(二)
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-项目转换 上一篇文章里说了1.2版本的下载,下载解压后 ...
- oracle交集,并集,差集
引自:http://www.2cto.com/database/201308/238777.html [sql] create table test1 ( name ), NN ) ); insert ...
- OpenWebFlow0.9用户手册与设计说明
1. OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎.Activiti (官方网站http://activiti.org/,代码托管在https://g ...
- spring beans的写入工具——spring-beans-writer
spring-beans-writer是我曾经为动态生成spring beans配置文件做的一个写入工具,托管地址: https://github.com/bluejoe2008/spring-bea ...