QT findet lgdi32 nicht
-
Ich versuche momentan diese Screenshot-Function in QT zu benutzen.
void ScreenShot(char*BmpName) { HWND DesktopHwnd = GetDesktopWindow(); RECT DesktopParams; HDC DevC = GetDC(DesktopHwnd); GetWindowRect(DesktopHwnd,&DesktopParams); DWORD Width = DesktopParams.right - DesktopParams.left; DWORD Height = DesktopParams.bottom - DesktopParams.top; DWORD FileSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+(sizeof(RGBTRIPLE)+1*(Width*Height*4)); char *BmpFileData = (char*)GlobalAlloc(0x0040,FileSize); PBITMAPFILEHEADER BFileHeader = (PBITMAPFILEHEADER)BmpFileData; PBITMAPINFOHEADER BInfoHeader = (PBITMAPINFOHEADER)&BmpFileData[sizeof(BITMAPFILEHEADER)]; BFileHeader->bfType = 0x4D42; // BM BFileHeader->bfSize = sizeof(BITMAPFILEHEADER); BFileHeader->bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); BInfoHeader->biSize = sizeof(BITMAPINFOHEADER); BInfoHeader->biPlanes = 1; BInfoHeader->biBitCount = 24; BInfoHeader->biCompression = BI_RGB; BInfoHeader->biHeight = Height; BInfoHeader->biWidth = Width; RGBTRIPLE *Image = (RGBTRIPLE*)&BmpFileData[sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)]; RGBTRIPLE color; HDC CaptureDC = CreateCompatibleDC(DevC); HBITMAP CaptureBitmap = CreateCompatibleBitmap(DevC,Width,Height); SelectObject(CaptureDC,CaptureBitmap); BitBlt(CaptureDC,0,0,Width,Height,DevC,0,0,SRCCOPY|CAPTUREBLT); GetDIBits(CaptureDC,CaptureBitmap,0,Height,Image,(LPBITMAPINFO)BInfoHeader, DIB_RGB_COLORS); DWORD Junk; HANDLE FH = CreateFileA(BmpName,GENERIC_WRITE,FILE_SHARE_WRITE,0,CREATE_ALWAYS,0,0); WriteFile(FH,BmpFileData,FileSize,&Junk,0); CloseHandle(FH); GlobalFree(BmpFileData); }
Windows.h ist eingebunden.
Die GDI32.Lib ist mit LIBS += "C:/Program Files (x86)/Windows Kits/8.1/Lib/winv6.3/um/x86/Gdi32.lib" gelinkt und funktioniert trotzdem nicht.Fehler ist dieser:
15:27:57: Führe Schritte für Projekt untitled10 aus...
15:27:57: Unveränderte Konfiguration, qmake-Schritt wird übersprungen.
15:27:57: Starte "C:\Qt\Qt5.5.0\Tools\QtCreator\bin\jom.exe"
C:\Qt\Qt5.5.0\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
echo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID / 24 / RT_MANIFEST / "debug\\untitled10.exe.embed.manifest">debug\untitled10.exe_manifest.rc
if not exist debug\untitled10.exe if exist debug\untitled10.exe.embed.manifest del debug\untitled10.exe.embed.manifest
if exist debug\untitled10.exe.embed.manifest copy /Y debug\untitled10.exe.embed.manifest debug\untitled10.exe_manifest.bak
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\untitled10.exe.embed.manifest /OUT:debug\untitled10.exe @C:\Users\Robin_2\AppData\Local\Temp\untitled10.exe.11904.16.jom
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetDIBits@28" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__BitBlt@36" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SelectObject@8" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateCompatibleBitmap@12" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__CreateCompatibleDC@4" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetDC@4" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetDesktopWindow@0" in Funktion ""void __cdecl ScreenShot(char *)" (?ScreenShot@@YAXPAD@Z)".
debug\untitled10.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
jom: C:\Users\Robin_2\Documents\build-untitled10-Desktop_Qt_5_5_0_MSVC2010_32bit-Debug\Makefile.Debug [debug\untitled10.exe] Error 1120
jom: C:\Users\Robin_2\Documents\build-untitled10-Desktop_Qt_5_5_0_MSVC2010_32bit-Debug\Makefile [debug] Error 2
15:27:57: Der Prozess "C:\Qt\Qt5.5.0\Tools\QtCreator\bin\jom.exe" wurde mit dem Rückgabewert 2 beendet.
Fehler beim Erstellen/Deployment des Projekts untitled10 (Kit: Desktop Qt 5.5.0 MSVC2010 32bit)
Bei der Ausführung von Schritt "Make"
15:27:57: Verstrichene Zeit: 00:00.
-
Hab die Lösung schon gefunden. Einfach die user32.lib gelinkt und nun gehts!
Nochmal für die, die auch das Problem haben:
LIBS += gdi32.lib user32.lib