简单问题,在主程序中调用dll中的函数的原理和过程?

fznher 2003-09-08 10:35:26
1 在主程序中调用dll中的函数是不是另开一个线程?
2 它们是不是不在一个堆中?
3 在内存中是不是象两个进程一样是相互隔离的?

请高手指教,谢谢!
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcforever 2003-09-10
  • 打赏
  • 举报
回复
是的!
给你介绍几本我认为很经典的关于线程和进程的书吧
《Win32多线程程序设计》侯捷译
《Windows核心编程》这本书是Microsoft出的,内容很多
祝你早日成为高手!
呵呵……
fznher 2003-09-09
  • 打赏
  • 举报
回复
谢谢楼上两位大侠的解释,那是不是如果多个进程或线程都调用了同一个dll,则在内存中就会有一个共享的代码段,而有多个数据段,即每个调用它的进程或线程都有一个独立的数据段?
vcforever 2003-09-09
  • 打赏
  • 举报
回复
面对每一个DLL用户(即楼主所说的主程序),当DLL被调用时,DLL自动为其全局
变量提供一份拷贝。在Win16中你必须很辛苦的设计才能够确保“DLL的每个用户彼此
隔离”。在Win32中这一隔离关系是自动而透明的。如果DLL中有一个数组用来记录
被打开的文件的handle,那么每当一个程序载如此DLL,就会有一个数组空间被产生
出来!
当一个进程载入或卸载一个DLL时,他所用到的每一个DLL的DllMain()都会被系统调用
并获得DLL_PROCESS_ATTACH消息。如果是线程开始执行,进程所用到的每一个DllMain
也都会被系统调用,并获得DLL_THREAD_ATTACH!
综上所述,在主程序中调用dll中的函数是不需要另外开辟线程的,他们并不在同
一个堆中,而且是隔离的,但是并不象进程隔离的那么完全!
dashitom 2003-09-09
  • 打赏
  • 举报
回复
看看《Visual c++程序设计导学》(清华大学出版社),上面对dll说的比较详细
duqiang2050 2003-09-08
  • 打赏
  • 举报
回复
1, 不是
2,不是
3,是相互隔离的,但不是象两个进程那样

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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