找不到用于绘图功能的C ++包含文件

时间:2014-04-07 21:12:21

标签: c++ winapi cygwin

有人可以告诉我相关的包含文件对CreateRectRgnIndirectCreateSolidBrushFillRgnCreatePen等有何影响?

我正在尝试解决以下错误:

build/Release/Cygwin_4.x-Windows/mywindow.o:mywindow.cpp:(.text+0xc3): undefined reference
to _imp__CreateRectRgnIndirect@4' build/Release/Cygwin_4.x-Windows/mywindow.o:mywindow.cpp:
(.text+0xca): undefined reference to _imp__CreateSolidBrush@4' 

到目前为止,我在Google搜索中找不到它。

2 个答案:

答案 0 :(得分:6)

这是链接器错误。这些函数已声明,但未定义。因此,您需要提供一个定义。这通常是在Windows上使用导入库完成的。在这些GDI函数的情况下,它是Gdi32.lib。将该库提供给您的链接器,一切都会很好。

要找出用于特定Win32功能的库,请参阅文档。例如,取CreateRectRgnIndirectdocumentation的底部是需求列表,包括声明函数的头文件以及定义它的库。

在这种情况下,系统会告诉您包含Windows.h并链接Gdi32.lib。显然你已经做过前者,因为否则你就不会有连接。

答案 1 :(得分:0)

这里的错误是因为我在编译命令(libgdi32.a)中缺少一个库,此后,我也没有在源代码之后放置-lgdi32,如:

不正确(编译时未定义参考错误):

gcc -lgdi32 source.cpp

正确:

gcc source.cpp -lgdi32

通过此页面发现了: http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use