【发布时间】:2014-01-10 12:50:26
【问题描述】:
我已经链接到 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 > Properties > Path Variables 进行了链接。链接资源选项卡下没有条目,也无法编辑。
【问题讨论】:
-
不要硬编码库的路径。只要您的搜索路径设置正确(应该在安装 Visual Studio 时完成),您只需要指定库的名称即可。或者您可能更喜欢在代码中设置它,#pragma 注释 (lib,"Gdiplus.lib")。您设置的 Windows 版本似乎正确,Windows 2000 和 Windows.h 应该包含必要的标头。我唯一能猜到的,你确定你的链接正确吗?
-
甚至不清楚您是否有链接问题。显示一条或三条具有代表性的错误消息,并准确说明您是如何进行链接的。
-
我尝试将其添加到此评论中;请参阅上面的编辑。
-
如果您还包括实际用于链接程序的链接命令,这可能会有所帮助。