D
dulei_115
Unregistered / Unconfirmed
GUEST, unregistred user!
C的DLL接口说明如下:
struct CCert
{
DWORD EncodingType;
DWORD CertLen;
BYTE Cert[2048];
};
int GetCurCert(OUT CCert * Cert);
------------------------
Delphi中对应:
type
TCert = record
EncodingType: DWORD;
CertLen: DWORD;
Cert: array[0..2047] of Char;
end;//end of record
PCert = ^TCert;
TGetCurCert = function (Cert: PCert): Integer; cdecl;
---------------------------
调用
var
vCert: PCert;
begin
vModule := LoadLibrary(PChar(cLibraryName));
if vModule <= 32 then
begin
ShowMessage('打开DLL文件“' + cLibraryName + '”时错误');
FreeLibrary(vModule);
Exit;
end;
pProc := GetProcAddress(vModule, 'GetCurCert');
if not Assigned(pProc) then
begin
ShowMessage('没有找到“GetCurCert”函数');
FreeLibrary(vModule);
Exit;
end;
New(vCert);
vErrorCode := TGetCurCert(pProc)(vCert);
if vErrorCode <> 0 then
begin
ShowMessage('调用函数“GetCurCert”时错误');
FreeLibrary(vModule);
Exit;
end;
ShowMessage('成功');
FreeLibrary(vModule);
end
调用成功,得到的数据vCert好像也正确,现在的问题是这段代码执行快完的时候(ShowMessage('成功'))报写地址错,没有Show出来,我试了好久,问题应该就是出在这个函数调用这里,哪位做过类似的帮我看看哪里有问题,或者会不会是DLL的问题,那是别人给的。谢谢!
struct CCert
{
DWORD EncodingType;
DWORD CertLen;
BYTE Cert[2048];
};
int GetCurCert(OUT CCert * Cert);
------------------------
Delphi中对应:
type
TCert = record
EncodingType: DWORD;
CertLen: DWORD;
Cert: array[0..2047] of Char;
end;//end of record
PCert = ^TCert;
TGetCurCert = function (Cert: PCert): Integer; cdecl;
---------------------------
调用
var
vCert: PCert;
begin
vModule := LoadLibrary(PChar(cLibraryName));
if vModule <= 32 then
begin
ShowMessage('打开DLL文件“' + cLibraryName + '”时错误');
FreeLibrary(vModule);
Exit;
end;
pProc := GetProcAddress(vModule, 'GetCurCert');
if not Assigned(pProc) then
begin
ShowMessage('没有找到“GetCurCert”函数');
FreeLibrary(vModule);
Exit;
end;
New(vCert);
vErrorCode := TGetCurCert(pProc)(vCert);
if vErrorCode <> 0 then
begin
ShowMessage('调用函数“GetCurCert”时错误');
FreeLibrary(vModule);
Exit;
end;
ShowMessage('成功');
FreeLibrary(vModule);
end
调用成功,得到的数据vCert好像也正确,现在的问题是这段代码执行快完的时候(ShowMessage('成功'))报写地址错,没有Show出来,我试了好久,问题应该就是出在这个函数调用这里,哪位做过类似的帮我看看哪里有问题,或者会不会是DLL的问题,那是别人给的。谢谢!