动态调用和释放
loadlibrary
freelibrary

解决方案 »

  1.   

    FreeLibrary();
    由于DLL是采用引用记数的方式调用的,因此调用一次FREELIABARY就使得该DLL的记数减一,直到减为0,DLL才彻底的从内存中释放
      

  2.   

    不好意思,忘了说我使用静态调用的,就是
    function INIT():integer; stdcall; external 'SiInterface.dll' name 'INIT';
    的这种,freelibrary(Hinst) 的Hinst是不是要用loadlibrary才有,
    可静态的怎么办?
      

  3.   

    顺便再问一句,能给一个动态调用DLL的例子吗?
    比如有一个“ABC.DLL”里有一个“int DEF(int i_input)”的函数
    要使用这个函数要怎么办?
      

  4.   

    现在的问题是:
      1、请给一个动态调用DLL的例子
        比如有一个“ABC.DLL”里有一个“int DEF(int i_input)”的函数
        要使用这个函数要怎么办?  2、静态调用的DLL函数能手工释放吗,怎么做?
      

  5.   

    看来你问题不是dll如何释放的问题,应该是的dll中有关的资源,比如数据库或表之类的操作有问题!!
      

  6.   

    to ibear:
      是呀,我也这么想。可是我现在很想知道动态调用DLL的方法。
      

  7.   

    动态加载Dll中的函数
    var
      H: HWnd;
      p: Function(i_input:Integer):Integer; stdcall;
    begin
            H := LoadLibrary(PChar('ABC.DLL'));
            if H <> 0 then
              begin
                p := GetProcAddress(H, PChar('DEF'));
                if Assigned(p) then p(123);
              end;
          FreeLibrary(h);
    end;