dll调用dll的FreeLibrary释放问题
我在一程序中调用了一BCB写的A.Dll,我在A.dll中调用了另外一个B.dll。我想在A.dll中的某个函数中把B.dll给FreeLibrary,结果主程序退出,如果在A.dll中把FreeLibrary的代码给注释掉则程序执行正常。如果我在A.dll中不调用B.dll则程序执行正常. 问题点数:20、回复次数:10Top
1 楼hmily1688(没什么好说的)回复于 2006-03-02 19:20:45 得分 0
我的程序是动态调用的dllTop
2 楼0delphi(睡个舒服觉)回复于 2006-03-02 22:56:37 得分 0
你的b 中的 dllmain 中有 退出的处理函数吗??
Top
3 楼0delphi(睡个舒服觉)回复于 2006-03-02 22:59:41 得分 10
我这里是正常的
现在怀疑 在 b 的dllmain 中的处理函数出的问题
如果不是这个原因,你在 b中 添加一个什么都不执行的函数,如果不出错就是你调用 b中的函数的执行的操作出的问题
Top
4 楼hmily1688(没什么好说的)回复于 2006-03-02 23:18:20 得分 0
楼上的好晚啊,呵呵,我在家正装BCB呢,我的B是用VC写的,原来是用BCB调用,我现在把BCB的窗体什么的都写成了一个Dll,用Delphi调用,真是麻烦,三种开发工具搞一个程序,痛苦ingTop
5 楼0delphi(睡个舒服觉)回复于 2006-03-02 23:29:37 得分 0
三个开发工具的便利都让你搞了,你还烦Top
6 楼hmily1688(没什么好说的)回复于 2006-03-03 00:38:58 得分 0
VC上手真不容易,不过功能真TMD强,呵呵,我用Delphi写了半天没搞定一牛哥用VC给我搞出来了。还是感觉Delphi与BCB亲切,我的BCB装完了,也写了个几个dll,调用没出错,肯定是VC写的Dll有问题,他并不是用的MVC类库,原来都是Linux下编译的东西,继续痛苦ingTop
7 楼0delphi(睡个舒服觉)回复于 2006-03-03 08:37:17 得分 0
你看看vc的那个动态库是怎么写的,在dllmain 中有处理吗
调用vc的标准的c++应该也不会出错的Top
8 楼hmily1688(没什么好说的)回复于 2006-03-06 11:32:15 得分 0
VC调用在dllMain中有处理,哪个方法是启动了一个守护线程,用来监听一个端口,在程序中Free时他把这个线程给关掉,问题处在关掉线程这段代码,不过不知道怎么解决目前Top
9 楼0delphi(睡个舒服觉)回复于 2006-03-06 14:21:38 得分 0
在dllmain 函数中不能处理比较麻烦的操作,只能把这个守护线程的启动和关掉在封装成两个函数,让其调用的库在不用的时候主动去处理Top
10 楼sunliwen780502(孙立文)回复于 2006-03-12 09:16:42 得分 10
可以考虑不采用FreeLibrary。
因为你在释放B.dll的时候,有可能它正在被使用。
当主程序结束时,在一起释放.Top




