您的位置:首页 > 编程语言 > Delphi

Delphi调用VC动态库的Char指针返回有关问题

2014-07-29 22:09 429 查看
Delphi调用VC动态库的Char指针返回问题

VC动态库的Dll接口函数:

char* Exec(int iLength, char* cXMLStr);

Delphi调用申明:

Exec:function(iLength: integer; cXMLStr: pchar): pchar;stdcall;

具体调用

var

sDllStr: string;

iDllLen: Integer;

pString: PChar;

begin

//执行execHis接口

if Assigned(@execHis) then

begin

//

sDllStr := '这是个测试程序';

iDllLen := Length(sDllStr);

pString := execHis(iDllLen, PChar(sDllStr));

end;

end;

接口调用返回了pString看不懂的字符串,应该返回的是汉字字符串,这个该怎么转换才能得到正确的字符串?

------解决方案--------------------

Delphi(Pascal) code
var
pUserInfo:array[0..96]of char;
sName:string;

ZeroMemory(@pUserInfo,97);

SetLength(sName,15);
for i:=0 to 14 do
sName[i+1]:=pUserInfo[i];

------解决方案--------------------

delphi7是行的,后面delphi2010,char型都是2个字节,你写
Delphi调用申明:
Exec:function(iLength: integer; cXMLStr: pansichar): pansichar;stdcall;就不管哪个版本都可以

------解决方案--------------------
你的VC的DLL是什么库?如果是VC自己专用的,比如msvcrXXX什么的那个,你声名的时候需要用cdecl惯例,而不是stdcall惯例,你的函数声明的写法应该是正确的,当然前提是你用的是D2009以下的版本
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: