繁体   English   中英

创建一个带有外部dll函数的Delphi类

[英]Create a Delphi Class with external dll functions in it

我需要像这样创建一个类

unit Classname;
interface
type

     TSomeClass = class
     public
       member1  : SomeType;
       member2  : AnotherDataType;


       ....
       function SomeFunction: SomeType; stadcall;external 'ExternalDll.dll';

 end;

可以吗?

如何从Delphi中的类声明外部函数(存储在ac dll中)

我正在使用Delphi 7。

提前致谢

外部函数不能是类声明的一部分。 您需要使用全局范围声明外部函数,并安排该类的方法然后调用该外部函数。

你可以用这样的伪方法创建一个类:

type
  TMyDllClass = class
  public
    NameOfDllEntryPoint: TFunctionTypeOfDllEntryPoint;
    constructor Create;
  end;

constructor TMyDllClass.Create;
begin
  inherited Create;
  LibHandle := LoadLibrary('path\to.dll');
  @NameOfDllEntryPoint := GetProcAddress(LibHandle, 'NameOfDllEntryPoint');
end;

MyDllClass := TMyDllClass.Create;
MyDllClass.NameOfDllEntryPoint(some, parameters);

这工作正常,我已经多次完成,例如mitab.dll,libjpeg_turbo.dll和其他dll。 这个想法是通过全局函数减少名称空间的混乱。

注意:为清楚起见,我省略了任何错误处理(例如,如果DLL无法加载或没有入口点)。 在此示例中,这将导致访问冲突,因为NameOfDllEntryPoint字段尚未初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM