为什么使用GetPixel导致“未定义的引用”?

时间:2011-09-21 02:34:39

标签: c++ windows gdi

#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 ++编译器

3 个答案:

答案 0 :(得分:3)

您需要将Gdi32.lib添加到依赖关系列表中。 GetPixel()函数不在默认库中。

编辑:

在Visual Studio中,您可以添加如下依赖项:

菜单:项目 - &gt;属性 - &gt;配置属性 - &gt;链接器 - &gt;输入

“附加依赖项”选项如下所示:

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

答案 1 :(得分:0)

得到该错误,我通过将 Visual Studio代码删除为我的IDE并切换到 Visual Studio 2019 来解决了该错误。 VS19自动解决了我的依赖错误!希望对您有所帮助!

答案 2 :(得分:-2)

要使用Win32 API,您需要创建一个Windows应用程序。

这意味着使用WinMain函数而不是main()函数。

它可以(可选)还包括使用窗口过程创建窗口和处理窗口消息。

执行此操作后,您将能够调用Win32 API GetPixel。

如果您坚持创建控制台或非Windows应用程序,那么您必须定义自己的GetPixel,它可能会直接访问视频内存。

因此,首先创建一个WinMain函数而不是main()。 (当然,您还需要链接到相应的库。)