Как правильно настроить библиотеки для GDI Windows в C ++? - PullRequest
1 голос
/ 09 октября 2019

Я хочу создать программу на 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 и добавил его в ту же папку. Сообщение об ошибке не изменяется при перекомпиляции.

Эта папка включена в раздел библиотеки редактора Dev-C ++, в котором используется компилятор gcc. Моя операционная система - 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;
}

1 Ответ

0 голосов
/ 09 октября 2019

Заголовочные файлы содержат только объявления. Для CreateCompatibleDC вам необходимо предоставить gdi32.lib как часть ссылки (это часть «Библиотека» блока «Требования» на страницах документации Microsoft).

...