加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 09:41:09 所属栏目:大数据 来源:网络整理
导读:我有一个用C编写的遗留DLL,它包含一个返回字符串的函数,我需要从Delphi访问这个函数.我有关DLL的唯一信息是用于访问函数的VB声明: 公共声明函数DecryptStr Lib“strlib”(Str As String)As String 我试过以下但没有成功: 宣言: function DecryptStr(s: PC
我有一个用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与访问冲突崩溃.我不知所措.

有什么建议 ?

解决方法

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

var
  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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读