【发布时间】:2012-11-23 13:48:02
【问题描述】:
我正在使用最新的 MinGW:
MINGWBASEDIR=C:\mingw
gcc version 4.7.0 (GCC)
gcc version 4.7.0 (GCC)
GNU gdb (GDB) 7.5
GNU ld (GNU Binutils) 2.22
GNU windres (GNU Binutils) 2.22
GNU dlltool (GNU Binutils) 2.22
GNU Make 3.82.90
#define __MINGW32_VERSION 3.20
#define __W32API_VERSION 3.17
这是源文件(test.cpp):
#include <stdio.h>
#include <windows.h>
int main(int Argc,char** Args) {
printf("%d",sizeof(TITLEBARINFO));
}
我是这样编译的:
g++ -c test.cpp
这是MinGW报告的错误信息:
C:\temp>g++ -c test.cpp
test.cpp: In function 'int main(int, char**)':
test.cpp:5:22: error: 'TITLEBARINFO' was not declared in this scope
TITLEBARINFO 应该在 windows.h 包含的 winuser.h 中声明。 我在 mingw/include 目录中检查了这两个头文件,TITLEBARINFO 的定义确实存在。但是我还是得到这个编译器错误,太奇怪了!
【问题讨论】:
-
在
#include<windows.h>之前尝试#define WINVER 0x505(XP)。许多实现默认为 0x400 (WinNt) 并且您使用的是 Win2000 中存在的东西 -
它似乎只适用于#define _WIN32_WINDOWS 0x410 //或以上
-
文档说 Windows2000(应该是 0x500)。 0x410 是 WinNtSp2。可能是当时已经引入了功能,但后来才正式记录下来。很高兴知道!
标签: c++ windows gcc window mingw