/delayload & lnk2019
I am trying to use some APIs found in dwmapi.dll (like DwmExtendFrameIntoClientArea), but I have some problems. If I include dwmapi.lib in the dll include list, the the app works fine on Vista, but doesn't want to run on XP since dwmapi.dll is obviously missing.
I tried the /DELAYLOAD option, but if I put dwmapi.lib in the delay loaded dlls, now the app doesn't compile:
I have linked my app to Delayimp.lib as said on MSDN and have included "#include <dwmapi.h>" in the header.
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/OPT:REF' specification
1>ComLib.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification
1>LINK : warning LNK4199: /DELAYLOAD:dwmapi.lib ignored; no imports found from dwmapi.lib
1>ComLib.obj : error LNK2019: unresolved external symbol __imp__DwmExtendFrameIntoClientArea@8 referenced in function "public: void __thiscall Forms::Dialog::ExtendFrame(struct tagRECT)" (?ExtendFrame@Dialog@Forms@@QAEXUtagRECT@@@Z)
Here are my linker compile arguments:
/INCREMENTAL /NOLOGO "Version.lib" "Psapi.lib" "Wininet.lib" "Ole32.lib" "Shlwapi.lib" "Delayimp.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DELAYLOAD:"dwmapi.lib" /MANIFEST /ManifestFile:"Debug\Windows App.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"App.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
I want a single executable to be able to run on both XP and Vista while calling DWM functions when ran in Vista.
Thanks in advance