dll是在什么时机引入的
本帖最后由 lijiqidong 于 2024-4-28 11:33 编辑https://i.postimg.cc/nc33q9Wm/2024-04-28-111418.png
如上图所示,信息框使用了MessageBox,方法位于User32.dll中
问题是:User32.dll是在哪里引入的?如果确定想使用的api之前有没有在全局引入过,求大佬给个思路。或者是引入了相关的头文件是在哪里引入的
hook 1、火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、comctl32 等几个dll,加载时机是在程序完成启动之前。
2、如果dll是通过头文件加lib的方式引用,加载时机跟上面一样,缺少dll会直接无法启动程序,所以无法在启动时释放dll文件。
3、通过表格输入的dll命令,如果没有被上面两种加载过,加载时机是在程序启动之后,用户的启动方法之前,所以也无法让用户手动释放文件。
4、用户自己通过代码加载dll并执行dll命令,加载时机由用户控制,可以在加载前释放文件。 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,加载时机是在程序完成启动之前。
大佬,这部分怎么论证,或者在哪个文件里面可以看到 lijiqidong 发表于 2024-4-28 17:54
RE:火山不管你有没用到,都会默认加载 kernel32、user32、gdi32、advapi32、shell32、ole32、oleaut32、 ...
在视窗基本类的源码里加载的,封装手册也有提到。 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]