从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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |