早教吧作业答案频道 -->其他-->
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...的网友还看了以下:
箱里放出同样个数的铅笔盒,如果从每只箱子里拿出60个,那么5只箱子里剩下铅笔盒个数的总和等于原来两 2020-05-13 …
5个箱里放着同样个数的铅笔盒,如果从每个箱里拿出60个,那么5个箱里剩下铅笔盒的个数的总和等于原来 2020-06-06 …
5个箱里放着同样个数的铅笔盒,如果从每个箱里拿出60个,那么5个箱里剩下铅笔盒的个数的总和等于原来 2020-06-20 …
5只筐中有100个苹果.在第一和第2只筐里有52个苹果,第2和第3只筐里有43个苹果,第3和第4只 2020-06-26 …
5个箱里放着同样个数的铅笔盒,如果从每个箱里拿出60个,那么5个箱里剩下铅笔盒的个数的总和等于原来 2020-06-27 …
5个箱里放着同样个数的铅笔盒,如果从每个箱里拿出60个,那么5个箱里剩下铅笔盒的个数的总和等于原来 2020-06-28 …
问个VC中cimagelist的问题mimagelist.Create(32,32,ILCCOLO 2020-07-20 …
三个鱼缸里共有24条金鱼,如果从第一个鱼缸里拿出3条放到第二个鱼缸里,在从第二个鱼缸里拿出1条放到 2020-08-02 …
箱子里放着同样多的铅笔盒,如果从每只里拿出60个,那么五只箱子里剩下铅笔盒的个数的总和等于两只箱子里 2020-10-30 …
数学题......两个书包里个有若干本书,小强先从第一个书包里拿出4本书放入第2个书包里,再从第2个 2020-12-04 …