• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

可执行文件运行时链接动态链接库DLL,动态链接库中个函数是以怎样的形式存在?

沃尔夫斯堡的羊 2020-11-06 浏览量:408

在系统中运行可执行文件,其链接的是DLL,是不是前提是这些DLL需要在系统中存在?另:

1)DLL中的各函数是以怎样的一种形式存在?二进制文件?

2)当可执行文件运行时,且应用到库中定义的函数时,也是将函数二进制文件拷贝其运行内存地址空间?

3)对可执行文件反汇编,其中可以看到其调用的库函数,其没有调用到的函数在不在其汇编文件中?

4)动态库在进程地址空间的.text段,这段中是所有库函数.text都在?还是仅仅是进程中用到的?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 所谓动态链接库不同的系统上都会有,DLL是win环境的,Linux的so文件。

    它们都是由系统负责加载的共享运行库,所以肯定需要在系统中存在才能保证加载成功。

    仅就DLL来说,编译为动态链接库的函数需要用专门的语法予以指明,此外还需要编译时配置好正确的编译选项,形成合适的格式。

    它是一种特定格式的二进制对象文件。可以由某种机制进行加载入内存供其他需要的程序调用。

    里面的各个函数对象都是有特定的组织方式的。


    当可执行文件运行到需要调用动态链接库库中函数时,大致会如下处理

    1. 查看函数是否加载,如果没有加载则请求系统加载,系统会从已注册的库或者可执行文件的合理搜索路径中加载对应文件,注意动态库一般会整体加载,但调用时可能只需要部分。

    2.按函数名去调用加载后的对应处理部分。



    • 发布于 2020-11-06
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 动态链接库里面使用符号表标识每个函数,但是那些函数的实现都是二进制汇编,运行的时候这些函数都要被加载到内存去运行的
    • 发布于2020-11-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

可执行文件运行时链接动态链接库DLL,动态链接库中个函数是以怎样的形式存在?