在程序中调用含窗体的DLL,使用ShowModal方式显示,使用free的方法关闭窗体回主程序时DELPHI显示寻址错误。请问各位如何释放dll资源?谢谢!

解决方案 »

  1.   

    可能是你在DLL中Form中有自己申请的资源没有释放。最好在Destroy中检查销毁
      

  2.   

    我以前也做过,不过没有这种问题。因为我是用delphi程序调用delphi写的窗口所以比较方便。我是声明了类之后,直接在主程序中创建对象,然后由主程序销毁的,没有什么问题啊?你不会是在那个dll的窗口中使用的free吧?
      

  3.   

    不能同时用free 和 在DLL中FormClose中用Action:=caFree来释放资源!!
    用了Free,在DLL的FormClose中就不要用Action:=caFree;
    或者不用Free,用Action:=caFree
      

  4.   

    呵呵,可能是你窗体中的其他资源在释放前没有判断是否为空指针.我以前也犯过同样的错误.
    建议在OnDestroy事件处理方法中用Assigned函数来判断要释放的对象是否还存在,另外,任何地方的对象释放后最好立即赋Nil.
    推荐用FreeAndNil方法释放资源.