DLL里Procedure guocheng1;StdCall; 
begin
guocheng2; //这里就调用不到guocheng2
end;
Procedure guocheng2;StdCall; 
begin
guocheng1,; //这里可以调用guocheng1,
end;如何像单元文件里一样头部申明?

解决方案 »

  1.   

    在interface部分重新声明
    ...
    interfaceProcedure guocheng1;StdCall;
    Procedure guocheng2;StdCall;
    ...implementationProcedure guocheng1;StdCall;
    begin
    guocheng2; //这里就调用不到guocheng2了
    end;
    Procedure guocheng2;StdCall;
    begin
    guocheng1,; //这里可以调用guocheng1,
    end; 
      

  2.   

    出错
    library Project2;
    interfaceProcedure guocheng1;StdCall;
    Procedure guocheng2;StdCall;uses
      Dialogs,
      ExtCtrls,
      SysUtils,
      Classes,
      windows;{$R *.res}
    implementationProcedure guocheng1;StdCall;
    begin
    showmessage('过程1');
    guocheng2;
    end;Procedure guocheng2;StdCall;
    begin
    showmessage('过程2');
    guocheng1;
    end;exports guocheng1;
    exports guocheng2;begin
    end.
      

  3.   

    interface  这里出错   
      

  4.   

    DLL单元中不能使用interface和implementation的使用PASCAL语言中的保留字forward, 对第二个函数进行前置申明:
    library Project2;uses
      Dialogs,
      ExtCtrls,
      SysUtils,
      Classes,
      windows;{$R *.res}Procedure guocheng2;  stdcall;  forward;Procedure guocheng1;  stdCall;
    begin
      showmessage('过程1');
      guocheng2;
    end;Procedure guocheng2;  stdCall;
    begin
      showmessage('过程2');
      guocheng1;
    end;exports guocheng1;
    exports guocheng2;
    begin
    end.
      

  5.   

    使用forward,在guocheng1的声明前面提前声明guocheng2如写成:
    procedure guocheng2;stdcall;forward;procedure guocheng1;stdcall;
    begin
    调用procedure;
    end;procedure guocheng2;stdcall;或者在interface区域声明
      

  6.   

    正解,如果是单元内就是interface ... implementation 之间写