lijiqidong 发表于 2024-4-28 11:24:00

dll是在什么时机引入的

本帖最后由 lijiqidong 于 2024-4-28 11:33 编辑

https://i.postimg.cc/nc33q9Wm/2024-04-28-111418.png
如上图所示,信息框使用了MessageBox,方法位于User32.dll中
问题是:User32.dll是在哪里引入的?如果确定想使用的api之前有没有在全局引入过,求大佬给个思路。或者是引入了相关的头文件是在哪里引入的

server 发表于 2024-4-28 11:44:42

hook            

Xelloss0618 发表于 2024-4-28 12:45:37

1、火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、comctl32 等几个dll,加载时机是在程序完成启动之前。
2、如果dll是通过头文件加lib的方式引用,加载时机跟上面一样,缺少dll会直接无法启动程序,所以无法在启动时释放dll文件。
3、通过表格输入的dll命令,如果没有被上面两种加载过,加载时机是在程序启动之后,用户的启动方法之前,所以也无法让用户手动释放文件。
4、用户自己通过代码加载dll并执行dll命令,加载时机由用户控制,可以在加载前释放文件。

lijiqidong 发表于 2024-4-28 17:54:45

Xelloss0618 发表于 2024-4-28 12:45
1、火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、com ...

RE:火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、comctl32 等几个dll,加载时机是在程序完成启动之前。

大佬,这部分怎么论证,或者在哪个文件里面可以看到

Xelloss0618 发表于 2024-4-28 20:27:55

lijiqidong 发表于 2024-4-28 17:54
RE:火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、 ...

在视窗基本类的源码里加载的,封装手册也有提到。

lijiqidong 发表于 2024-4-28 21:24:24

Xelloss0618 发表于 2024-4-28 20:27
在视窗基本类的源码里加载的,封装手册也有提到。

封装手册看到了,但是我把视窗基本类的每个头文件和源文件都找了,没有找到引入的过程【可能我的寻找方式有问题】。
我看了如下信息
头文件:
"libs\\win_base\\vol_base.h"
源文件:
libs\win_base\cpp\vol_assert.cpp
libs\win_base\cpp\vol_classes.cpp
libs\win_base\cpp\vol_functions.cpp
libs\win_base\cpp\vol_time.cpp
libs\win_base\cpp\vol_key.cpp
libs\win_base\cpp\vol_math.cpp
libs\win_base\cpp\vol_mem.cpp
libs\win_base\cpp\vol_mem_pool.cpp
libs\win_base\cpp\vol_muti_thread.cpp
libs\win_base\cpp\vol_stream.cpp
libs\win_base\cpp\vol_string.cpp
libs\win_base\cpp\vol_array.cpp
libs\win_base\cpp\vol_bitmap.cpp
libs\win_base\cpp\vol_com.cpp
页: [1]
查看完整版本: dll是在什么时机引入的