如果在DLL中定义了函数,那么假设是用的静态连接方式,必须给这个DLL定义一个借口单元,在接口单元引入在DLL中定义的函数。那么我的问题是:在接口单元如果自己定义了函数,而此函数不是DLL中的,那么在编译后,这个函数也有代码共享,或者说只在内存中存储一份实例吗?

解决方案 »

  1.   

    library DLL;
    uses
      SysUtils,
      Classes,
      dlltest in 'dlltest.pas';{$R *.res}
    function Max:integer;export;
    begin
    result:=1000;
    end;exports
       Max;
    begin
    end.
    下下面这个是接口
    unit dlltest;
    interface
    function Max : Integer;
    procedure Min;implementation
    function Max; external 'DLL.DLL';
    procedure Min;
    begin
    //
    end;
    end.
    也就是说,接口中有个Min那么他在内存中的保存形式跟Max一样不?
      

  2.   

    莫非楼主想使用 未在exports区域列出的函数?
      

  3.   

    DLL发布函数在exports中,根据你说的意思来理解,接口单元应该不在DLL中,“必须”两个字是否用的不妥呢?
    再者编译之后,内存中什么也没有,除非你实例化了DLL中的类。才会在内存中有这个类的对象。否则,编译完了和没编译内存没什么差别。