Почему использование GetPixel приводит к «неопределенной ссылке»? - PullRequest
3 голосов
/ 21 сентября 2011
#include <iostream>
#include <windows.h>
#include <string>
#include <ctime>
#include<stdio.h> 

using namespace std;

int main()
{
    HDC dc = GetDC(NULL); 
    COLORREF color = GetPixel(dc, 10, 10); 
    ReleaseDC(NULL, dc);
    cout << color;

    return 0;
}

Там говорится об ошибке:

[Linker error] undefined reference to `GetPixel@12'   
 ld returned 1 exit status    
[Build Error]  [Project1.exe] Error 1

Я использую компилятор Dev-C ++

Ответы [ 2 ]

3 голосов
/ 21 сентября 2011

Вам необходимо добавить Gdi32.lib в свой список зависимостей.Функция GetPixel() отсутствует в библиотеках по умолчанию.

РЕДАКТИРОВАТЬ:

В Visual Studio вы можете добавить следующие зависимости:

Меню: Проект -> Свойства -> Свойства конфигурации -> Линкер -> Ввод

Параметр «Дополнительные зависимости» будет выглядеть следующим образом:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

Добавьте Gdi32.lib к нему.

0 голосов
/ 21 сентября 2011

Чтобы использовать Win32 API, вам нужно создать приложение Windows.

Это означает использование функции WinMain вместо функции main ().

Может также (необязательно) такжевключая создание окна и обработку сообщений окна с помощью оконной процедуры.

После этого вы сможете вызывать Win32 API GetPixel.

Если вы настаиваете на создании консоли иликроме приложения Windows, вам придется определить свой собственный GetPixel, который, вероятно, будет обращаться к видеопамяти напрямую.

Итак, начните с создания функции WinMain вместо main ().(Конечно, вам также нужно будет ссылаться на соответствующие библиотеки.)

...