2012-11-23 52 views
0

我使用了最新的MinGW: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目錄中檢查了這2個頭文件,TITLEBARINFO的定義確實存在。但我仍然得到這個編譯器錯誤,多麼奇怪!

+1

嘗試'#define WINVER 0x505'(XP)'#include '之前。許多實現默認爲0x400(WinNt),並且您使用的是Win2000中存在的東西 –

+0

它似乎只能用#define _WIN32_WINDOWS 0x410 //或更高 – jondinham

+1

文檔說Windows2000(應該是0x500)。 WinNT2是0x410。可能是當時引入的功能性,但後來才正式記錄。很高興知道! –

回答

1

gcc -c -D_WIN32_WINDOWS=0x0410 test.cpp

的MinGW顯然默認的0x0400。

+0

耶,它的作品,謝謝! :) – jondinham