自己写的应用程序在调用某些库函数或者系统调用时,它找到这个库函数或者系统调用在内存中的确切位置的原理和过程是什么啊?比如printf() ,为什么只要include <stdio.h>进来,我们就可以用了,操作系统或者是编译器是如何通过printf()这个函数符号最终找到它在内存中所对应的地址的?应该不是所有机器安装好以后,这个函数都在不同机器内存中的同一个地址吧?
dll 有个基址,导出函数相对于基址有自己的偏移量,当执行到 printf() 语句时,系统根据 dll 基址 + printf 地址偏移量的方式找到代码的起始地址并执行。
非常感谢!