有人可以告诉我相关的包含文件对CreateRectRgnIndirect
,CreateSolidBrush
,FillRgn
,CreatePen
等有何影响?
我正在尝试解决以下错误:
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搜索中找不到它。
答案 0 :(得分:6)
这是链接器错误。这些函数已声明,但未定义。因此,您需要提供一个定义。这通常是在Windows上使用导入库完成的。在这些GDI函数的情况下,它是Gdi32.lib
。将该库提供给您的链接器,一切都会很好。
要找出用于特定Win32功能的库,请参阅文档。例如,取CreateRectRgnIndirect
。 documentation的底部是需求列表,包括声明函数的头文件以及定义它的库。
在这种情况下,系统会告诉您包含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