首页 新闻 搜索 专区 学院

应用程序找到调用的某些库函数或者系统调用的原理和具体过程?

0
悬赏园豆:20 [已解决问题] 解决于 2014-03-03 13:31

自己写的应用程序在调用某些库函数或者系统调用时,它找到这个库函数或者系统调用在内存中的确切位置的原理和过程是什么啊?比如printf() ,为什么只要include <stdio.h>进来,我们就可以用了,操作系统或者是编译器是如何通过printf()这个函数符号最终找到它在内存中所对应的地址的?应该不是所有机器安装好以后,这个函数都在不同机器内存中的同一个地址吧?

Helloafer的主页 Helloafer | 初学一级 | 园豆:145
提问于:2014-03-02 15:41
< >
分享
最佳答案
0

dll 有个基址,导出函数相对于基址有自己的偏移量,当执行到 printf() 语句时,系统根据 dll 基址 + printf 地址偏移量的方式找到代码的起始地址并执行。

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2014-03-03 11:39

非常感谢!

Helloafer | 园豆:145 (初学一级) | 2014-03-03 13:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册