windows下装载动态库时一般使用LoadLibrary和GetProcAddress来装载动态库和获取动态库指定导出函数的地址,在DelphiXe10.2.X for Linux下也能使用这两个函数来装载 SO 动态库,重点要注意Handle是HMODULE类型,不能用cardinal类型,虽然Windows下LoadLibrary和GetProcAddress都是可以使用cardinal类型,但Linux要使用THandle类型(也就是HMODULE类型)。

方法如下:

type

  TGetSum = function(A: integer; B: integer): integer; stdcall;

var

i:integer;

 FHandle: HMODULE;

GetSum : TGetSum ;

begin

   FHandle := LoadLibrary(PChar(FilePath + 'libLinuxDLL.so'));

   if FHandle <> 0 then begin

    GetSum := TGetSum (GetProcAddress(FHandle,

    pchar('GetSum ')));

    if @GetSum <>nil then 

    i:=GetSum(3,3);

   end;

end;

Logo

更多推荐