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


Log in to reply