也许是个愚蠢的问题,但我不知道答案。使用GetModuleHandle或LoadLibrary加载dll(然后使用该dll的函数)并直接包含所需的标题有什么区别?例如,使用的GetModuleHandle:GetModuleHandle和包含标题之间的区别
typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
PGNSI pGNSI;
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
pGNSI = (PGNSI) GetProcAddress(
GetModuleHandle(TEXT("kernel32.dll")),
"GetNativeSystemInfo");
if(NULL != pGNSI)
pGNSI(&si); //calling function through pointer
else GetSystemInfo(&si);
但我可以包括WINDOWS.H头直接调用该函数从我的代码:
#include <windows.h>
SYSTEM_INFO si;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
GetNativeSystemInfo(&si);
这同样适用于例如OPENGL32.DLL,我不知道在我的项目中包含opengl函数的头文件是否更好,或者使用Getmodulehandle和GetProcAdress来调用所需的函数。有什么不同?以某种方式使用getmodulehandle好处的第一种方法?感谢您的回答。
GetNativeSystemInfo()是特殊的,它不可用在早期版本的Windows中。你真的应该使用GetProcAddress。这不适用于opengl。 – 2010-08-16 14:29:53
GetNativeSystemInfo()只是一个例子,但正如我现在看到的,这是一个很好的例子,现在我明白了,谢谢 – sanjuro 2010-08-17 14:13:26