当前位置:  开发笔记 > 后端 > 正文

从Delphi中的C DLL获取字符串返回值

如何解决《从Delphi中的CDLL获取字符串返回值》经验,为你挑选了1个好方法。

我有一个用C编写的遗留DLL,它包含一个返回字符串的函数,我需要从Delphi访问这个函数.我有关DLL的唯一信息是用于访问函数的VB声明:

公共声明函数DecryptStr Lib"strlib"(Str As String)As String

我试过以下但没有成功:

宣言:

function DecryptStr(s: PChar): PChar; cdecl; external 'strlib.dll';

用法:

var
  p1, p2 : pchar;
begin
  GetMem( p1, 255 );
  StrPCopy( p2, 'some string to decrypt' );
  p1 := DecryptStr( p2 );
end;

这始终使DLL与访问冲突崩溃.我不知所措.

有什么建议 ?



1> 小智..:

考虑重写您的测试代码,如下所示:

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.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有