也許是個愚蠢的問題,但我不知道答案。使用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