From: James Y. <cy...@gm...> - 2007-11-15 13:42:54
|
This is how I tried to load user32.dll before getting an API handle from it: > if (!(hModule = LoadLibrary("USER32.DLL"))) { // tried "USER32", same > result > puts("user32.dll not loaded."); > } > if ((errCode = GetLastError())) { > printf(Error Code: %d\n", errCode); > return (1); > } > It seems user32.dll is loaded all right since the "not loaded" message never came out, but the Error Code is always 126 which means "The specified module could not be found." Please correct me if I did it wrong. I desperately need to figure out how to get an API handle from a DLL since I always get undefined reference to xxx when I know that function is in a DLL (eg. SendInput in USER32.DLL). I am running mingw on a windowsXP SP2 machine, so windows.h should've included winuser.h, but SendInput somehow is still UNDEFINED !!! -- This is a UTF-8 formatted mail ----------------------------------------------- James C.-C.Yu +886932353055 |
From: Yongwei W. <wuy...@gm...> - 2007-11-15 14:18:39
|
On 15/11/2007, James Yu <cy...@gm...> wrote: > This is how I tried to load user32.dll before getting an API handle from it: > > if (!(hModule = LoadLibrary(" USER32.DLL"))) { // tried "USER32", > same result > > puts("user32.dll not loaded."); > > } > > if ((errCode = GetLastError())) { > > printf(Error Code: %d\n", errCode); > > return (1); > > } > > > It seems user32.dll is loaded all right since the "not loaded" message never > came out, > but the Error Code is always 126 which means "The specified module could not > be found." You should call GetLastError only when hModule is NULL. Period. Please read the documentation. Best regards, Yongwei -- Wu Yongwei URL: http://wyw.dcweb.cn/ |
From: Greg C. <gch...@sb...> - 2007-11-15 14:34:28
|
On 2007-11-15 13:42Z, James Yu wrote: > This is how I tried to load user32.dll before getting an API handle from it: > >> if (!(hModule = LoadLibrary("USER32.DLL"))) { // tried "USER32", same >> result >> puts("user32.dll not loaded."); >> } >> if ((errCode = GetLastError())) { >> printf(Error Code: %d\n", errCode); >> return (1); >> } >> > It seems user32.dll is loaded all right since the "not loaded" message never > came out, > but the Error Code is always 126 which means "The specified module could not > be found." > > Please correct me if I did it wrong. Read the GetLastError() documentation: http://msdn2.microsoft.com/en-us/library/ms679360.aspx | If the function is not documented to set the last-error code, | the value returned by this function is simply the most recent | last-error code to have been set; some functions set the last | -error code to 0 on success and others do not. BTW, it looks like you're typing lines that are a little longer than your email program's wrapping width; please change that because it makes your messages harder to read. > I desperately need to figure out how to get an API handle from a DLL since I > always get > undefined reference to xxx when I know that function is in a DLL (eg. > SendInput in USER32.DLL). > > I am running mingw on a windowsXP SP2 machine, so windows.h should've > included winuser.h, but > SendInput somehow is still UNDEFINED !!! "undefined reference" sounds like a linker error. You can't fix that by including a header, which has an effect only at compile time. You can't fix it by calling LoadLibrary() at run time, either. What are you trying to accomplish? |
From: Jim M. <jim...@wb...> - 2007-11-15 16:59:57
|
James Yu wrote: > Please correct me if I did it wrong. > I desperately need to figure out how to get an API handle from a DLL > since I always get > undefined reference to xxx when I know that function is in a DLL (eg. > SendInput in USER32.DLL). That is a linker error, doing a loadlibrary will not help resolve that. Sounds like you simply need to implicitly link to user32.dll (-luser32 on the link command line) -Jim > > I am running mingw on a windowsXP SP2 machine, so windows.h should've > included winuser.h, but > SendInput somehow is still UNDEFINED !!! > -- |