如何修复未定义的引用SetPixel()?

时间:2014-06-09 23:24:32

标签: c compiler-errors undefined-reference

我正在学习如何在C中制作Windows应用程序,并尝试使用SetPixel(HDC hDC, int x, int y, COLORREF crColor)设置单个像素。

在我添加该行之前,我从未遇到过编译错误。我当然包含windows.h。我一直在寻找答案,我从来没有找到任何答案。

它提供错误" undefined reference to _imp__SetPixel@16' "

要编译,我使用命令" gcc -g -Wall -o $(EXENAME) $(SRC) "。没有花哨的IDE。 如果有人能告诉我为什么会说 imp _ 和@ 16部分,请同样。我以前从未见过。

编辑:我已经找到_imp在this site的含义。

2 个答案:

答案 0 :(得分:3)

除了包含头文件外,我相信你还需要链接到库libgdi32.a或gdi32.lib。

如下所述,_imp__SetPixel @ 16是您正在调用的函数SetPixel()的错位名称。

答案 1 :(得分:0)

来自the MSDN website,您应该将#include <Windows.h>包含在与其他头文件相同的区域中(如stdio.h,stdlib.h,string.h等)。

如果这不起作用,您可能希望尝试使用链接器选项进行编译,链接器选项链接到同一网站上列出的正确库(Gdi32.lib)。

要仔细检查的另一件事是Gdi32.dll在

一个。在执行目录或

B中。在Windows上的system32 / sysWOW64文件夹中

我推荐A,因为如果您尝试将程序发送给某人,.dll文件将与您的可执行文件一起使用(并非所有计算机都具有相同的.dll文件)。

干杯,

詹森。