Prueba de esta manera
con Rio 10.2
Código Delphi
[-]
library MyLibrary;
uses
System.SysUtils,
System.Classes;
{$R *.res}
function Test1(): PAnsiChar; stdcall;
begin
Result:= PAnsiChar('Prueba de Función en DLL 1');
end;
exports
Test1,
Test2
;
begin
end.
con D7
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
TTest1 = function() : PAnsiChar; stdcall;
var
Form1: TForm1;
implementation
function Test1() : PAnsiChar; stdcall; external 'MyLibrary.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
sResult : AnsiString;
begin
sResult:=trim( Test1);
memo1.Lines.Add(sResult);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
sResult: AnsiString;
Handle: THandle;
TestStr: TTest2;
begin
Handle := LoadLibrary('MyLibrary.dll');
if Handle <> 0 then
@TestStr:= GetProcAddress(Handle, 'Test1');
if @TestStr <> nil then
begin
sResult := TestStr;
memo1.Lines.Add(sResult);
end;
FreeLibrary(Handle);
end;