我有一个用 C 编写的遗留 DLL,其中包含一个返回字符串的函数,我需要从 Delphi 访问该函数。我所掌握的有关 DLL 的唯一信息是用于访问该函数的 VB 声明:
公开声明函数 DecryptStr Lib "strlib" (Str As String) As String
我尝试了以下方法但没有成功:
宣言:
function DecryptStr(s: PChar): PChar; cdecl; external 'strlib.dll';
Usage:
var
p1, p2 : pchar;
begin
GetMem( p1, 255 );
StrPCopy( p2, 'some string to decrypt' );
p1 := DecryptStr( p2 );
end;
这始终会导致 DLL 因访问冲突而崩溃。我不知所措。
有什么建议 ?
考虑重写您的测试代码,如下所示:
var
p1, p2 : pchar;
begin
GetMem( p1, 255 ); // initialize
GetMem( p2, 255 );
StrPLCopy( p2, 'some string to decrypt', 255 ); // prevent buffer overrun
StrPLCopy( p1, DecryptStr( p2 ), 255); // make a copy since dll will free its internal buffer
end;
如果调用 DecryptStr 仍然失败,则阅读http://support.microsoft.com/kb/187912 http://support.microsoft.com/kb/187912小心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)