2011-07-24 88 views
0

運行程序時出現「無法找到導入」錯誤我有一個在Windows 7/Vista上運行正常但在Windows XP中執行時出錯的程序。它曾經運行,但我添加了一個功能,在Windows 7上,需要功能ChangeWindowMessageFilter。錯誤的Windows XP給的在Windows XP中使用ChangeWindowMessageFilter

「找不到進口; DLL可能丟失,損壞,或錯誤的版本文件‘USER32.dll中’,功能‘ChangeWindowMessageFilter’(錯誤0)」

怪異的是,我有一個if語句,確保操作系統版本是Vista或更高版本,所以它甚至沒有被調用。但是有一個錯誤。這是怎麼發生的?

這是怎麼回事?

回答

1

聽起來就像你在做靜態鏈接而不是動態鏈接。

嘗試此代替:

在頭文件:

typedef BOOL (WINAPI *PFN_CHANGEWINDOWMESSAGEFILTER) (UINT, DWORD);

在C/CPP文件:

PFN_CHANGEWINDOWMESSAGEFILTER pfnChangeWindowMessageFilter = (PFN_CHANGEWINDOWMESSAGEFILTER) GetProcAddress (hModule, "ChangeWindowMessageFilter");

if (pfnChangeWindowMessageFilter) { /* Do the stuff */ }