DLL释放不干净?
需要在DLL中显示MDI窗口,挂靠主调用程序Application,
dll中
Aplication := 主程序Application
(若使用Application.Handle := 主程序Application.Handle无法显示MDI窗口)
关闭主程序后总是无法释放干净DLL资源,为何?
(DLL中的窗体和控件都正常释放了)
问题点数:50、回复次数:8Top
1 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2005-11-01 22:24:00 得分 10
在dll的窗体中的 onClose 事件, 加入:
OnClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFreeTop
2 楼dutousuan(独头蒜)回复于 2005-11-02 19:14:03 得分 0
现在资源释放没有问题了,但是调用freelibray(DLL.handel)会报异常,不调用到正常的很,奇怪?
释放多了?Top
3 楼aladdin2006(回答问题不接分,不想要分,只为提高技术,解决问题)回复于 2005-12-01 14:20:31 得分 10
修改成 freelibrary('dll.dll') //说明‘’里面是你调用的DLL文件名 不是DLL.handel????
你上面的handel 对吗?应该是handleTop
4 楼aimie(独孤行)回复于 2005-12-03 14:59:20 得分 5
不错Top
5 楼rgiggs(我)回复于 2005-12-03 16:02:54 得分 10
应该在加载Dll中的窗口单元时用一个变量把原来的Application保存起来,然后再设置Application:=主程序Application;最后在释放前把Application指定回原来保存的Application。
Top
6 楼rgiggs(我)回复于 2005-12-03 16:13:06 得分 5
另外,指定一个函数指针给DLLProc全局变量,以便回调,这个函数中就是判断是否释放Dll,如果是则把Application恢复。Top
7 楼skphoebe(小鲨鱼)回复于 2005-12-03 16:37:26 得分 5
很可能 你dll里面 还有资源没 释放,也会报错的!!!Top
8 楼aladdin2006(回答问题不接分,不想要分,只为提高技术,解决问题)回复于 2005-12-07 15:11:16 得分 5
你MDI窗口 用到什么空件了 一一列出 包括按钮什么Top




