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

来源:互联网 发布:设计app软件多少钱 编辑:程序博客网 时间:2024/06/05 06:59
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以下的版本
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 研二考上公务员怎么办 个体户不发工资怎么办 个税逾期申报怎么办 个税零申报逾期罚款怎么办 地税申报未缴款怎么办 个税没有申报怎么办? 卖衣服业绩不好怎么办 五险一金断交5年怎么办 不敢给客户打电话怎么办 猎头网搜找不到怎么办 自保件退保佣金怎么办 不想上班怎么办的理由 通知面试不想去怎么办 催收打单位电话怎么办 社恐不敢找工作怎么办 香港通行证过期了怎么办 港奥通行证过期怎么办 港澳台通行证过期了怎么办 苹果id退款失败怎么办 苹果退款没资格怎么办 公路车刹不住怎么办 哈罗电动车怎么办月卡 自行车向左倒该怎么办 骑电动车腿冷怎么办 骑自行车身体歪怎么办 骑单车膝盖酸痛怎么办 骑自行车大腿痛怎么办 骑单车屁股疼怎么办 骑山地车手腕疼怎么办 硅藻泥赃了怎么办 人事专员没经验怎么办 分不清手动挡位怎么办? 科目三练车加减档老挂错怎么办 两个面试都通过怎么办 吃饭禁忌破了怎么办 社团招新困难怎么办 社团收集材料困难怎么办 离职后怎么办社保卡 工作后怎么办社保卡 毕业后社保卡怎么办 实习面试没通过怎么办