c++ - 如何在 C++ 中为 Windows 的 GDI 正确设置库?

标签 c++ windows gcc libraries

我想制作一个 C++ 程序,可以实时访问屏幕上的像素(颜色和强度,例如位图)。我认为应该可行的方法之一是使用 Windows 的 GDI 函数,例如 CreateCompatibleDC .

问题是当我尝试运行它时,我收到错误消息: “ C:\Users\Myname\AppData\Local\Temp\cce0hZ9w.o Screencapture_example.cpp:(.text+0x30): 未定义对“__imp_CreateCompatibleDC”的引用 "

因此看起来包含该函数的库不存在或未包含在内。但是我确实包含了 windows.h 和 wingdi.h,并且根据上面给出的链接中的页面,该函数是 wingdi.h 的一部分。

它还说它需要库 Gdi32.lib,我在我的计算机上找不到任何地方。但是,有一个名为 libgdi32.a 的文件,位于文件夹 C:\Programfiles\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib 中。我下载了 gdi32.lib 并将其添加到同一文件夹中。重新编译时错误信息没有改变。

该文件夹包含在使用 gcc 编译器的 Dev-C++ 编辑器的库部分中。我的操作系统是 Windows 10。

#include<windows.h>
#include<wingdi.h>
int main(int argc,char *argv[]){

HDC hdc = GetDC(NULL); // get the desktop device context
HDC hDest = CreateCompatibleDC(hdc); // create a device context to use yourself

//More to come here but I don't want to complicate it too much before
//I get it to work this far.

return 0;
}

最佳答案

头文件仅提供声明,对于 CreateCompatibleDC,您需要提供 gdi32.lib 作为链接的一部分(这是 Microsoft 文档页面上 Requirements block 的“库”部分)。

关于c++ - 如何在 C++ 中为 Windows 的 GDI 正确设置库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58309215/

相关文章:

C# 检测击键并发送到后台窗口

node.js - apt-get 在 Dockerfile 中不工作

gcc - 让 CMake 使用 gccfilter

c++ - 二叉搜索树代码

c++ - std::function 的运行时实现

c++ - 终端如何在 shell 提示符下以编程方式阻止退格,这样你就不能在它上面退格,例如$ 用于 bash 或 C :\blah\>

c++ - 转发声明文件 *

c - gcc 中的全局寄存器变量

c++ - 如何将 "this"指针传递给全局函数

c++ - Gtkmm-3.0 编译代码抛出 Gtk+2 符号错误