未定义的CreateCompatibleDC,BitBlt等参考?

时间:2013-12-21 22:37:41

标签: c++ reference undefined

我已经链接到gdi32.lib。无奈之下,我还链接到两个不同版本的gdi32.lib,以及gdiplus.lib,并包含了我能找到的所有gdi头文件,但无济于事。但是,这个问题在额外的链接之前就开始了,所以我想我可以放心地假设我的问题不是库之间的冲突或任何类似的干扰。

夹杂物/定义:

#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#include <iostream>
#include <process.h>
#include <windows.h>
#include <winuser.h>
#include <gdiplus.h>
#include "UVMap.h"

相关代码:

case WM_PAINT:{
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        HDC hdcMemory = CreateCompatibleDC(hdc);
        BITMAP bmp = screen.getBitmap(hdcMemory);
        BitBlt(hdc,0,0,w,h,hdcMemory,0,0,SRCCOPY);
        EndPaint(hwnd,&ps);
        DeleteDC(hdc);
    }break;

我在搜索此问题时发现的每个结果都声称您必须链接到gdi32。以下是我添加的链接:

  • C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib \ x64 \ Gdi32.Lib
  • C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib \ Gdi32.Lib
  • C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Lib \ GdiPlus.lib

编辑:错误显示如下:

.../Testing.cpp:50: undefined reference to `CreateCompatibleDC@4'
.../Testing.cpp:52: undefined reference to `BitBlt@36'

那样的?我在Eclipse中通过Project&gt;进行了链接。属性&gt;路径变量。 “链接的资源”选项卡下没有条目,也没有可编辑的条目。

2 个答案:

答案 0 :(得分:3)

您需要链接到coredll.lib for CreateCompatibleDC

您需要链接到Gdi32.lib for BitBlt

作为参考,当您收到涉及Windows功能的链接错误时,只需谷歌该功能并转到该功能的MSDN文档(我已链接到这两个特定功能的两个页面),然后向下滚动到“需求”部分,确保链接到指定的库。

答案 1 :(得分:0)

如果您收到错误undefined reference到gdi32中定义的函数但已经链接了gdi32,那么请尝试将gdi32移动到链接命令的末尾。