加载时间和运行时动态链接之间的差异

8 dll

Load-time动态链接和Run-time动态链接有什么区别?

jus*_*sij 15

加载时动态链接

当可执行文件在构建时链接到DLL时,链接器将不会插入目标代码,而是插入一个存根,该存根基本上表示此名称的函数位于此DLL中.

现在,当运行可执行文件时,可执行文件的位将丢失(即函数存根),因此在允许程序运行之前,程序加载程序通过将它们替换为DLL文件中的入口点来修复这些缺失的函数.

只有在所有存根被替换(即已解决)之后,才允许运行可执行文件.

那是加载时动态链接.

运行时动态链接

在这种情况下,可执行文件没有链接到任何DLL库文件,因此它不会在dll中包含任何存根,因此程序加载器在运行可执行文件时没有问题.

但是从DLL中获取函数的任务是留给可执行文件的,可以使用GetProcAddress Windows API 来完成.

那是运行时动态链接.


Ken*_*ite 2

你忘记了“作业”标签。

加载时链接意味着您链接到的 DLL 在应用程序启动时加载,无论您是否实际使用该 DLL 中的功能。动态链接意味着 DLL 的功能仅在实际需要时才加载。