社区
非技术区
帖子详情
动态调用Dll中的Form用Show的方式如何FreeLibrary?
pnmrbo
2011-08-12 02:04:29
Dll中有个Form,动态调用它,这个Form不用Showmodal而是Show,如何在结束这个Form时FreeLibrary?
...全文
166
14
打赏
收藏
动态调用Dll中的Form用Show的方式如何FreeLibrary?
Dll中有个Form,动态调用它,这个Form不用Showmodal而是Show,如何在结束这个Form时FreeLibrary?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pnmrbo
2011-09-01
打赏
举报
回复
我在Dll的Onclose里Postmessage给主程序,然后主程序收到这个消息时Freelibrary,这样也会连主程序也结束掉,但我在主程序中用一个timer来Freelibrary则没有问题,请问这是为什么
OO_is_just_P
2011-08-31
打赏
举报
回复
最好用callback
vokeyliu
2011-08-31
打赏
举报
回复
DLL不用你手工卸载吧,在引用计数为零的时候应该是自动释放的吧
pnmrbo
2011-08-31
打赏
举报
回复
还是解决不了,请高手指点
山东蓝鸟贵薪
2011-08-17
打赏
举报
回复
跟踪测试一下
taste品味
2011-08-17
打赏
举报
回复
你可以把DLL的句柄传到窗体中啊
rainychan2009
2011-08-16
打赏
举报
回复
这个不复杂啊,你有那个form的句柄,直接关闭就行了啊,只是注意在DLL中写好OnDestroy施放相关资源就成
「已注销」
2011-08-16
打赏
举报
回复
FormDestroy事件中给主程序窗口发一天‘我关闭了’的消息,用postmessage,主程序窗口收到这条消息以后,先processmessage一下,确保窗口已关闭,然后FreeLibrary.
pnmrbo
2011-08-16
打赏
举报
回复
[Quote=引用 2 楼 jekhn 的回复:]
Dll里面有一个DLLProc的过程,DLL加载的时候会传入Dll_Process_attach的reason_id,卸载的时候会传入Dll_Process_detach,你就可以在detach的时候free你的form就可以了。
[/Quote]
谢谢,我是想在我把Dll中这个Form关闭时可以卸载Dll,而不是主程序关闭时才卸载
rainychan2009
2011-08-16
打赏
举报
回复
[Quote=引用 7 楼 pnmrbo 的回复:]
我把LoadLibrary出来的Handle传给Dll,在这个Dll的OnClose中FreeLibrary,为什么会把我的主程序也结束掉了?
[/Quote]
LoadLibrary的句柄?这个可是代表DLL本身的!你的主程序结束了,肯定是访问异常,被系统给干掉了!LZ仔细理一理思路
pnmrbo
2011-08-16
打赏
举报
回复
我把LoadLibrary出来的Handle传给Dll,在这个Dll的OnClose中FreeLibrary,为什么会把我的主程序也结束掉了?
山东蓝鸟贵薪
2011-08-15
打赏
举报
回复
加载DLL
使用DLL
释放DLL
直接释放即可
Jekhn
2011-08-15
打赏
举报
回复
Dll里面有一个DLLProc的过程,DLL加载的时候会传入Dll_Process_attach的reason_id,卸载的时候会传入Dll_Process_detach,你就可以在detach的时候free你的form就可以了。
bzworinima
2011-08-15
打赏
举报
回复
另外发布一个函数,用来关闭这个FORM
C#程序实现
动态
调用
DLL
的研究
C#程序实现
动态
调用
DLL
的研究 摘 要:在《csdn开发高手》2004年第03期
中
的《化功大法——将
DLL
嵌入EXE》一文,介绍了如何把一个
动态
链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源
中
释放出来,通过静态加载延迟实现DLL函数的
动态
加载,程序退出后实现临时文件的自动删除,从而为解决“
DLL
Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C+
C#程序实现
动态
调用
DLL
摘 要:在《csdn开发高手》2004年第03期
中
的《化功大法——将
DLL
嵌入EXE》一文,介绍了如何把一个
动态
链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源
中
释放出来,通过静态加载延迟实现DLL函数的
动态
加载,程序退出后实现临时文件的自动删除,从而为解决“
DLL
Hell”提供了一种解决方案。这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也有相似的V
C#
中
如何
调用
动态
链接库
DLL
每种编程语言
调用
DLL
的方法都不尽相同,在此只对用C#
调用
DLL
的方法进行介绍。首先,您需要了解什么是托管,什么是非托管。一般可以认为:非托管代码主要是基于win 32平台开发的
DLL
,activeX的组件,托管代码是基于.net平台开发的。如果您想深入了解托管与非托管的关系与区别,及它们的运行机制,请您自行查找资料,本文件在此不作讨论。 (一)
调用
DLL
中
的非托管函数一般方法
C#
调用
DLL
的几种方法
c#
中
dll
调用
方法 一、
DLL
与应用程序
动态
链接库(也称为
DLL
,即为“Dynamic Link
Library
”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹
中
有很多
DLL
文件,Windows就是将一些主要的系统功能以
DLL
模块的形式实现。
动态
链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其
中
包含能被程序或其它
DLL
调用
来完成一定操作的函数(方法。注:C#
中
一般称为“方法”),但这些函数不是执行程序本身的一部分,
C#程序实现
动态
调用
DLL
(2)
3. C#
动态
调用
DLL
中
的函数 因为C#
中
使用
Dll
Import是不能像
动态
load/unload assembly那样,所以只能借助API函数了。在kernel32.
dll
中
,与
动态
库
调用
有关的函数包括[3]: ①Load
Library
(或MFC 的AfxLoad
Library
),装载
动态
库。 ②GetProcAddress,获取要引入的函数,将符号名或标识号转换为
DLL
非技术区
828
社区成员
53,611
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章