我写的 DLL 代码library aa;
uses
sysutils, classes;
function test(x, y:string):string;stdcall;
begin
  result:= x + y;
end;
exports
  test;
begin
end.编译后调用提示,  内存不能为 written而把上面的参数 x, y 换成 integer 就没事, 请帮忙解决我在网吧, 等着急, 谢谢

解决方案 »

  1.   

    加上ShareMem单元
    uses ShareMem;这个单元要放在第一个!
      

  2.   

    建议把
    function test(x, y:string):string;stdcall;
    begin
      result:= x + y;
    end;
    写道一个单独的uint中去,再试
      

  3.   

    或者不要使用string,而使用shortString或PChar.
      

  4.   

    上面的回答已经把问题解决了
    1.使用ShareMem单元,放在 uses 的后面(第一个)
    2.不要使用string,改为PChar
      

  5.   

    1.使用ShareMem单元,放在 uses 的后面(第一个)
    是什么意思2.pchar 怎么定义, 新手, 还请详细点
      

  6.   

    1.就是你在USES的关键字后直接写SHAREMEM...后再接什么windows forms之类的的PAS.
    2.ppchar:pchar;
      

  7.   

    1.就是引用ShareMem单元
    2.function test(x, y:PChar):PChar;stdcall;
      

  8.   

    OK
    谢谢
    我定义的返回值  boolean调用时已正常, 但是关闭调用窗口事, 提示
    "该内存不能为 read"
    是什么原因呢?