вызов функции в DLL Delphi - PullRequest
2 голосов
/ 13 марта 2012

Я хотел бы знать, могу ли я вызвать функцию внутри моей DLL в Delphi из другой библиотеки Delphi.

пример:

Мой A.dll это:

library circle;

 uses
   SysUtils, Classes, Math;

 {$R *.res}

 function CircleArea(const radius : double) : double; stdcall;
 begin

 end;

 exports CircleArea;

 begin
 end.

B.DLL - это черный ящик, в котором я могу получить доступ только к одной функции:

function calculdiameter(const radius : double) : double; stdcall;

Как мне получить доступ к calculdiameter из b.dll, чтобы изменить тип с двойного на десятичный?

1 Ответ

5 голосов
/ 13 марта 2012

Вы можете вызывать функции DLL из другой библиотеки DLL. Просто объявите функцию:

function calculdiameter(const radius : double) : double; stdcall; external 'b.dll';

Тогда назовите это:

function CircleArea(const radius : double) : double; stdcall;
begin
  // I don't know why you'd call this function here, but you can if you want to.
  Calculdiameter(radius);
  Result := Pi * radius * radius;
end;

То, что вы не можете сделать, это изменить содержимое DLL. Как вы сказали, B.DLL - это черный ящик. Вы можете вызывать функции, которые он экспортирует, но если то, что он экспортирует, не то, что вы хотите, тогда вам нужно найти то, что вы хотите где-то еще.

...