windows - Link Fejl 2001, når du linker til User32.dll

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at forbinde en objektfil, der bruger to metoder, der er angivet i winuser.h og defineret i User32.dll: GetMonitorInfo og WindowFromMonitor. Kilden kompilerer til en objektfil helt fint, men når jeg forsøger at linke, får jeg følgende fejl output:


D3dCtx.obj : error LNK2001: unresolved external symbol xGetMonitorInfo
D3dCtx.obj : error LNK2001: unresolved external symbol xMonitorFromWindow


Sagen er, jeg kalder ikke 'xGetMonitorInfo' eller 'xMonitorFromWindow'. Kørende grep på alle kildefiler viser, at kun 'GetMonitorInfo' og 'WindowFromMonitor' bliver kaldt. Jeg inkluderer korrekt windows.h, som inkluderer winuser. h. Jeg er også korrekt indstillet min LIBPATH i linker mulighederne, som bekræftes af verbose link output.


Følgende vises også i min verbose link output:


Found \_\_imp\_GetMonitorInfoA
    Referenced in nafxcw.lib(afxribboncategory.obj)
    Referenced in nafxcw.lib(afxtooltipctrl.obj)
    Referenced in nafxcw.lib(afxribbonkeytip.obj)
    Referenced in nafxcw.lib(afxfullscreenimpl.obj)
    Referenced in nafxcw.lib(afxframeimpl.obj)
    Referenced in nafxcw.lib(afxglobalutils.obj)
    Referenced in nafxcw.lib(afxdropdowntoolbar.obj)
    Referenced in nafxcw.lib(wincore.obj)
    Referenced in nafxcw.lib(afxglobals.obj)
    Referenced in nafxcw.lib(afxpopupmenu.obj)
    Referenced in nafxcw.lib(afxpropertygridtooltipctrl.obj)
    Loaded User32.lib(USER32.dll)
Found \_\_imp\_MonitorFromWindow
    Referenced in nafxcw.lib(wincore.obj)
    Loaded User32.lib(USER32.dll)


Desuden er GetMonitorInfo defineret i winuser.h som:


WINUSERAPI
BOOL
WINAPI
GetMonitorInfoA(
    \_\_in HMONITOR hMonitor,
    \_\_inout LPMONITORINFO lpmi);
WINUSERAPI
BOOL
WINAPI
GetMonitorInfoW(
    \_\_in HMONITOR hMonitor,
    \_\_inout LPMONITORINFO lpmi);
#ifdef UNICODE
#define GetMonitorInfo  GetMonitorInfoW
#else
#define GetMonitorInfo  GetMonitorInfoA
#endif // !UNICODE


Når jeg ændrer al henvisning til 'GetMonitorInfo' til 'GetMonitorInfoA', får jeg kun



  D3dCtx.obj: fejl LNK2001: uløst eksternt symbol xMonitorFromWindow



som min linker fejl output. Desværre synes MonitorFromWindow ikke at have flere versioner tilgængelige.


Jeg skal bemærke, at jeg bruger 64bit versioner af biblioteker, link og cl.


Hvad sker der her, og hvordan kan jeg linke mit program med succes?

Bedste reference


Jeg ved ikke, om du var i stand til at finde en løsning på dette eller ej. Men jeg havde det samme problem, og årsagen til dette var, at jeg havde en fil med navnet multimon.h


Ligner i tilfælde af 64 bit kompilering, på grund af makrodefinitioner kommer definitionerne af disse funktioner fra to kilder, og sandsynligvis er en fra multimon.h overordnet og er forkert.


Jeg løst det ved blot at kommentere dette inkluderer, og det er begyndt at linke fint.


//#include <multimon.h>