我的DLL文件如下:
library ToolLib;
  SysUtils,
  Classes;{$R *.res}
function Three(SourceResult:Integer):String;stdCall;
begin
 if SourceResult>0 then
   Result:=IntToStr(SourceResult*3) //结果存放于Result
 else
   Result:=IntToStr(SourceResult);
end;
Main文件如下:function Three(SourceResult:Integer):String;
    StdCall external 'ToolLib.DLL';
...
begin
  Showmessage(Three(3));
end;
...
当显示'9'之后就会出错:"invalid pointer operation"

解决方案 »

  1.   

    老大,你新建DLL的时候没有看到注释告诉你在DLL中不要用string作为函数的返回值吗,要用你需要包含DelphiMM这个单元吗
      

  2.   

    同意楼上
    uses
      sharemem;
      

  3.   

    同意思,最好不要用string做参数和返回值,试试看能不能用PChar代替.
      

  4.   

    是在我的Main文件里Uses sharemem吗?
      

  5.   

    居然用String?
    仔细看看String的结构。
      

  6.   

    可以了,不好意思!刚看了ShareMem的帮助.
      

  7.   

    我在两个文件里都用了uses ShareMem,但现在当关闭窗口的时候还是会出现那个错误.
      

  8.   

    我知道了,要把ShareMem放在dpr文件Uses列表的第一个位置.