为什么DLL中的每个导出函数都有个固定的地址,有什么目的呢?

oldeagleking 2006-07-28 10:02:57
RT, 这样做有什么目的?
...全文
196 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldeagleking 2006-07-30
  • 打赏
  • 举报
回复
ding
erehw 2006-07-29
  • 打赏
  • 举报
回复
真是敢问..
函数入口就是地址,所以函数就是地址...
所谓固定,真跟你家的门牌一样,你经常换来换去,谁找到你?
oldeagleking 2006-07-29
  • 打赏
  • 举报
回复
等有分了再加进来吧.

好像你们说的都不对呀, 事实是不是这样的: DLL中的函数地址只是DLL进程空间中的地址, 应用程序 A 而调用DLL的时候,并没有将DLL调入到A的进程空间, 而是调到一个全局的空间,并且在这个全局空间中,DLL建立起自己的进程空间, 这样,不管你调用了多个个DLL,就算各个DLL有虚地址相同的函数,反正都是在各个DLL的空间中,所以不会冲突.
思危 2006-07-29
  • 打赏
  • 举报
回复
dll在进程中加载的地址不同, 函数真实的地址是dll地址+函数地址,所以不会重复。

55, 0 分贴
yyyaaa 2006-07-29
  • 打赏
  • 举报
回复
关注
oldeagleking 2006-07-29
  • 打赏
  • 举报
回复
一个进程使用多个DLL, 多个DLL中的多个API的"虚地址"可能相同,
而这些相同的"虚地址"又都是该进程空间中的,这时不是冲突了吗?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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