Gdiplus位图错误

时间:2013-04-14 18:31:17

标签: gdi+

我正在尝试将HBITMAP转换为Gdiplus位图。我的代码正在获取一些屏幕截图,其中包含我从谷歌发现并将其放入HBITMAP的一些代码。我想使用Gdiplus获取rgb值(特别是argb)。

获取屏幕截图的代码工作文件,但将HBITMAP转换为Bitmap的行会引发大量疯狂的链接器错误。这是我的代码:

HDC hScreenDC = CreateDC((LPCWSTR)"DISPLAY", NULL, NULL, NULL);     
// and a device context to put it in
HDC hMemoryDC = CreateCompatibleDC(hScreenDC);

int x = GetDeviceCaps(hScreenDC, HORZRES);
int y = GetDeviceCaps(hScreenDC, VERTRES);

// maybe worth checking these are positive values
HBITMAP hBitmap = CreateCompatibleBitmap(hScreenDC, x, y);

// get a new bitmap
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemoryDC, hBitmap);

BitBlt(hMemoryDC, 0, 0, 1920, 1080, hScreenDC, 0, 0, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemoryDC, hOldBitmap);

// clean up
DeleteDC(hMemoryDC);
DeleteDC(hScreenDC);

Gdiplus::Bitmap* pBitmap = Gdiplus::Bitmap::FromHBITMAP( hBitmap, NULL ); // <-- problem line

线性错误是LNK2019并说: 错误2错误LNK2019:未解析的外部符号_GdipFree @ 4在函数“public:static void __cdecl Gdiplus :: GdiplusBase :: operator delete(void *)”中引用(?? ?? 3GdiplusBase @ Gdiplus @@ SAXPAX @ Z)

我已经包含了gdiplus.h,windows.h和#define GDIPVER 0x110

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

要检查的第一件事 - 您是否已链接到gdiplus.lib?这很可能就是问题所在。

在开始使用GDI +功能之前,请确保在某个时刻调用了GdiplusStartup()

答案 1 :(得分:0)

您需要将项目关联到gdiplus.lib

#include "Gdiplus.h"
#pragma comment(lib,"gdiplus.lib")

结帐此post作为示例。