MinGW搞砸了COLORREF和RGB

时间:2013-06-27 07:19:15

标签: c++ windows mingw

我正在尝试使用MinGW构建第三方开源项目。其中一个依赖项是wxWidgets。当我尝试从MSYS创建项目时,我从

中收到编译器错误

/MinGW/msys/1.0/local/include/wx-2.8/wx/msw/private.h

In function 'COLORREF wxColourToRGB(const wxColour&)':
error: cannot convert 'RGB' to 'COLORREF {aka long unsigned int}' in return

由于according to Microsoft RGB宏返回COLORREF,这有点奇怪。

事实上,查看H:\ MinGW \ include我找到wingdi.h,代码如下

#define RGB(r,g,b) ((COLORREF)((BYTE)(r)|((BYTE)(g) << 8)|((BYTE)(b) << 16)))

什么样的事情会导致这个错误?有什么方法可以检查是否包含了来自wingdi.h而不是其他地方的COLORREF和RGB?这甚至值得检查吗?

规格

  • GCC版本4.7.2
  • wxWidgets版本2.8.12

(我是C ++和MinGW的新手,但通常是计算机和编程知识)

1 个答案:

答案 0 :(得分:1)

尝试使用-E预处理源代码,并检查宏扩展实际发生了什么,或者是否正在重新定义宏。

#include其标头依赖项之后,预处理源无疑会非常冗长。您的文本编辑器的搜索功能grepfindstr是您的朋友。