delphi调用DLL中的函数,函数类型要一样吗?请大家看看
情况如下:
用delphi做一DLL,里面有一输出函数;定义如下:
function GetMax: integer; stdcall;
实现代码:
function GetMax: Integer;
begin
Result := 100;
end;
工程文件:
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1};
exports
GetMax;
{$R *.res}
begin
end.
调用DLL的代码如下:
procedure button1OnClick(sender: TObject);
var
a: function(b: PChar; c: boolean): Integer; // 此函数类型与DLL中定义的函数参数个数不一样,但调用没有问题,不知道是什么原因?
max: integer;
LibHandle: THandle;
begin
LibHandle := LoadLibrary('DLL路径'); // 成功
try
if LibHandle <> 0 then
begin
@a := GetProcAddress(LibHandle, 'GetMax'); // 取函数地址
max := a('',true); // 成功,取得100,为什么,DLL中定义的方法是没有参数的啊?
end;
finally
FreeLibrary(LibHandle);
end;
end;
请各位高手帮忙解释下,小弟搞不懂是什么原因,为什么只要函数名称和DLL中定义的函数名称相同,参数不一样都可以调用啊。
用delphi做一DLL,里面有一输出函数;定义如下:
function GetMax: integer; stdcall;
实现代码:
function GetMax: Integer;
begin
Result := 100;
end;
工程文件:
library Project1;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1};
exports
GetMax;
{$R *.res}
begin
end.
调用DLL的代码如下:
procedure button1OnClick(sender: TObject);
var
a: function(b: PChar; c: boolean): Integer; // 此函数类型与DLL中定义的函数参数个数不一样,但调用没有问题,不知道是什么原因?
max: integer;
LibHandle: THandle;
begin
LibHandle := LoadLibrary('DLL路径'); // 成功
try
if LibHandle <> 0 then
begin
@a := GetProcAddress(LibHandle, 'GetMax'); // 取函数地址
max := a('',true); // 成功,取得100,为什么,DLL中定义的方法是没有参数的啊?
end;
finally
FreeLibrary(LibHandle);
end;
end;
请各位高手帮忙解释下,小弟搞不懂是什么原因,为什么只要函数名称和DLL中定义的函数名称相同,参数不一样都可以调用啊。
...全文
相关推荐
Delphi 几种常见的Dll调用方法l
Delphi7 调用DLL几种常见的方法源码。
Delphi中调用及释放DLL的实践案例
本文还有配套的精品资源,点击获取 简介:Delphi,基于Object Pascal语言的IDE,广泛用于开发桌面应用。DLL作为Windows核心组件,使得程序间能共享功能,节省内存,提高效率。本例展示在Delphi中如何正确调用和释放DLL资源。介绍了DLL的导出函数定义、加载、获取函数指针、调用函数以及最终释放DLL的步骤。提供了一个完整的Delphi程序示例,帮助初...
Delphi中DLL调用MDI窗口的实现详解
本文还有配套的精品资源,点击获取 简介:DLL(动态链接库)是Windows操作系统中的关键组件,支持代码和数据共享,提高效率。在Delphi编程语言中,DLL特别适用于多文档界面(MDI)应用程序。本文详细介绍了如何在Delphi中创建DLL来与MDI窗口进行交互,包括DLL项目创建、函数编写、导出函数、DLL调用及MDI窗口的管理等技术要点。 1. DLL定义...
delphi调用C# DLL
delphi调用C# DLL
delphi中动态链接库中函数的调用,DLL
使用Delphi编写静态调用动态链接库(DLL),完成三个数的大小对比,求出最大值,最小值。


