请教这个.
DLL的INTERFACE问题.
DLL文件:
1.主体部分
type
TA = class(TInterfacedObject,IA)
private
FA : PChar;
Public
Constructor Create(value : pchar);
Function GetData: PChar;stdcall;
end;
implementation
Constructor Ta.Create(Value : PChar);
begin
FA := Value;
Inherited create;
end;
Function TA.GetData: pchar;
begin
Result := FA;
end;
接口部分:
type
IA = interface
['{C143B447-4F9D-475A-B33B-182916F05DEC}']
Function GetData: PChar;stdcall;
end;
输出部分:
function GetA(value : PChar) : IA;export;
begin
Result := TA.Create(value);
end;
exports
GetA;
EXE调用DLL部分
var
HD : Cardinal;
GetTa : function(value : PChar) : IA;
tmp : IA;
begin
try
HD := LoadLibrary('Project1.Dll');
if hd > 32 then
begin
GetTa := GetProcAddress(HD,'GetA');
tmp := GetTa(PChar('aaa'));
memo1.Lines.Add(StrPas(tmp.GetData));
end
else
memo1.Lines.Add('DLL Load Error~')
finally
FreeLibrary(HD);
end;
调用的时结果正常返回.但报错误..