MDI窗体做成DLL窗体时,关闭总出错!网上介绍的方法都试过了!求各位帮忙!

jozosoft 2006-10-05 08:26:44
在关闭主程序后,总是报内存出错.

出错的源码下载地址:

http://www.cngrandpower.com/tanyong/jozosoft/down/help.rar
...全文
268 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jozosoft 2006-11-01
  • 打赏
  • 举报
回复
兄弟们,大哥们,解答一下呀
jozosoft 2006-10-31
  • 打赏
  • 举报
回复
奇怪!真奇怪!
同样的一个DLL窗体(MDI)在D7 下编译,运行时内存出错,主要是函数里的: Application:=app; 出错.
但在D2006里编译后运行却没问题,这让我如何是好?
光明山人 2006-10-12
  • 打赏
  • 举报
回复
怪哉!在我这里不出任何错误。

有两个建议:
1、最后在EXE和DLL的dpr的uses中将ShareMem作为第一个单元;
2、CoInitialize/CoUninitialize 没有必要用这种罗嗦的方法,只需要在任何一个单元(也可以专门创建一个单元)的initialization和finalization中写上即可,要简单和有效得多。如:
initialization
CoInitialize(nil);
finalization
CoUninitialize;
其它的DLL全局初始化和扫尾也可以这么做。
另外,ExitDLL(DLL_PROCESS_ATTACH)应该不会调用到,你设断点试试。

--
http://www.agui.googlepages.com
mailto: agui.cn(a)gmail.com
jozosoft 2006-10-05
  • 打赏
  • 举报
回复
请楼上大哥写一下代码!
因为我以前都是这样没错的.
不知会不会是因为以前是D7现在是D6的原因否?
还有,你说的还原,我已经把退出函数地址交给程序了呀?
mrzho 2006-10-05
  • 打赏
  • 举报
回复
在你的 CreateForm(App: TApplication);Stdcall;中记录application:=app; 是对的,但是在释放的时候你应该还原该值,你出错的原因就在这里啦.
这个值应该在 DLL的析构函数里面做.
jozosoft 2006-10-05
  • 打赏
  • 举报
回复
为什么带包编译反而没问题了?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧