GetStockObject @ 4的未定义引用

时间:2009-08-27 12:40:19

标签: c windows eclipse

我在Eclipse / MinGW / C(项目类型:C)中创建了一个程序,它应该只显示一个空窗口。它还有以下内容:

wndclassex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

GetStockObject()的调用会产生编译错误:

  

Z:/ mtsts_workspace / MTSTS /调试/../ WinMain.c:29:   未定义的引用   `GetStockObject @ 4'

有谁知道出了什么问题?

3 个答案:

答案 0 :(得分:7)

检查documentation,确保链接到所需的库(-lgdi32)。

答案 1 :(得分:3)

最佳猜测:您需要关联gdi32.lib

答案 2 :(得分:0)

如果您的Win32应用程序不是简单的GUI,则需要以下链接指令来引入正确的库:

lgdi32
  • luser32:图形子系统
  • lkernel32:用户子系统
  • lcomctl32:内核子系统
  • lm:通用控件dll版本
  • mwindows:数学库
  • <math.h>:独立的GUI(无控制台)应用程序

以上指令告诉链接器要链接的库;这与定义库函数原型的编译器头文件(与其他东西)不同。例如,声明-lm不会自动链接数学库;相反,声明<wingdi.h>不会自动链接数学库。您需要-lgdi32。另外,-lgdi32不会自动链接gdi32库;您需要streams.filter(progressive=True).all()

在命令行中,您可以在所有文件名之后直接指定.fillna()(以及其他名称)。否则,如何指定如何链接各个子系统库取决于您正在使用的IDE所针对的特定构建目标。检查您的文档以选择IDE。