我封装函数:
function test(stmp:Pchar):Pchar;stdcall;
begin
  s := Pchar(stmp);
  TmpStr:='';
  for i:=1 to Length(s)do
  TmpStr:=TmpStr+IntToHex(ord(s[i]),2);
  Result:= Pchar(TmpStr);
end;只要我加载这个DLL,都出那个错误呀,,

解决方案 »

  1.   

    s := Pchar(stmp);
    这是啥,stmp已经是pchar了,而且你确认是这个过程出错吗
      

  2.   

    返回值的问题吧,看看Dll Unit关于ShareMem的说明
      

  3.   

    一般返回值为Pchar的都是用以下格式输出,可以参考windows API函数声明.
    如: 
    function GetComputerName(var lpBuffer:PChar;lpnSize: DWORD): Boolean;
      

  4.   

    嗯 你的函数中用了在函数内未声明的变量,估计做全局考虑了。那么要想和主程序交互,则必须ShareMem。最后好像还要带额外的一个DLL,挺麻烦呢。建议楼主换种设计方法。