我在Eclipse / MinGW / C(项目类型:C)中创建了一个程序,它应该只显示一个空窗口。它还有以下内容:
wndclassex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
对GetStockObject()
的调用会产生编译错误:
Z:/ mtsts_workspace / MTSTS /调试/../ WinMain.c:29: 未定义的引用 `GetStockObject @ 4'
有谁知道出了什么问题?
答案 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。