早教吧作业答案频道 -->其他-->
Vc++#pragmacomment(linker,"/DELAYLOAD:WS232.dll")typedefint(WINAPI*PFNPOPMSGBOX)(void);#pragmacomment(linker,"/DELAYLOAD:WS232.dll")在软件里面有这个东西!
题目详情
Vc++ #pragma comment(linker,"/DELAYLOAD:WS2_32.dll")
typedef int (WINAPI *PFN_POPMSGBOX)(void);
#pragma comment(linker,"/DELAYLOAD:WS2_32.dll")
在软件里面有这个东西!
typedef int (WINAPI *PFN_POPMSGBOX)(void);
#pragma comment(linker,"/DELAYLOAD:WS2_32.dll")
在软件里面有这个东西!
▼优质解答
答案和解析
楼上的乱解释,我简单给你解释一下什么是DELAYLOAD吧
一般情况下,直接用#pragma comment(linker,"WS2_32.lib"),连接器在连接的时候,直接把该LIB对应的DLL加入到EXE的模块导入表中,这个表是在EXE执行之前由NTDLL模块去初始化的,各个模块的DLLMAIN会被执行,然后才轮到EXE代码执行;这里会有一个问题,如果这个DLL在EXE里并不一定会使用到,那么在初始化的时候就会浪费一些时间去初始化了
为了解决上述的问题,DELAYLOAD主出现了,注意它的用法是直接指定DLL名,而不是指定LIB名,使用了DELAYLOAD后,当且仅当你的EXE第一次调用到DLL里的函数的时候,这个DLL才会被LoadLibrary加载进EXE进程空间里,这个时候才进行DLL初始化;简单地说,DELAYLOAD就是用到的时候才加载,如果你的程序里走了其它分支,没有使用到ws2_32的API的时候,这个DLL是根本不会加载到进程空间里的
一般情况下,直接用#pragma comment(linker,"WS2_32.lib"),连接器在连接的时候,直接把该LIB对应的DLL加入到EXE的模块导入表中,这个表是在EXE执行之前由NTDLL模块去初始化的,各个模块的DLLMAIN会被执行,然后才轮到EXE代码执行;这里会有一个问题,如果这个DLL在EXE里并不一定会使用到,那么在初始化的时候就会浪费一些时间去初始化了
为了解决上述的问题,DELAYLOAD主出现了,注意它的用法是直接指定DLL名,而不是指定LIB名,使用了DELAYLOAD后,当且仅当你的EXE第一次调用到DLL里的函数的时候,这个DLL才会被LoadLibrary加载进EXE进程空间里,这个时候才进行DLL初始化;简单地说,DELAYLOAD就是用到的时候才加载,如果你的程序里走了其它分支,没有使用到ws2_32的API的时候,这个DLL是根本不会加载到进程空间里的
看了 Vc++#pragmacom...的网友还看了以下:
帮我看看是什么意思,小弟没读过英语your.dll[cldiis\client.dll]diffe 2020-05-14 …
Accessviolationataddress01C02F91inmodule'mSystemM 2020-05-17 …
未处理的“System.Data.OleDb.OleDbException”类型的异常出现在sys 2020-05-17 …
执行for%iin(c:\windows\system32\*.dll)doregsvr32%i时 2020-06-15 …
309,对于Y,dll接线变压器下列表示法正确的是()309、对于Y,dll接线变压器下列表示法正 2020-07-19 …
设有如下定义:typedefint*INTEGER;INTEGERp,*q;下列叙述正确的是(). 2020-07-21 …
Vc++#pragmacomment(linker,"/DELAYLOAD:WS232.dll") 2020-07-23 …
dlnput8.dll放在那我的dnf不能玩了,他说缺少dlnput8.dll我就带网上下了个dln 2020-11-23 …
关于pngfilt.dll的神奇问题这几天发现看不到png的图,于是搜了一下,发现是pngfilt. 2020-12-01 …
AltiumDesigner6.9Outofmemoryat1B69904A.ADVPCB.DLL, 2020-12-07 …