求助。调用C++动态库指针访问出错。
c++声明
extern "C" __declspec(dllexport) long __stdcall Read(__int16 intcom,int baud,unsigned char *vskh,int *vlql,__int16 *vics,__int16 *viklx,char *error);
delphi声明:
function Read
(intcom:SmallInt;baud:Integer;var vskh:PByte;var vlql:pinteger;var vics:pinteger; var viklx:pinteger;var vserror:PChar):integer;stdcall;
调用代码:
procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
err:pchar;
pb:PByte;
vlql:pinteger;
vics,viklx:pSmallInt;
vlq,vic,vikl:integer;
s:string;
begin
err := StrAlloc(256);
GetMem(vlql, 3*SizeOf(Integer));
GetMem(vics, 3*SizeOf(SmallInt));
GetMem(viklx, 3*SizeOf(SmallInt));
i:=Gold_Readcard(0,9600,pb,vlql,vics,viklx,err);
if i=0 then
begin
vlq:=vlql^;
s:='OK,' + inttostr(vlq);
ShowMessage(PChar(s));
end;
错误:
vlq:=vlql^;
vlql返回值:$64
这句老是提示非法访问内存。