Hi, In fact I build WIN64 with the set, and I believe that only preferable behaviour of have_header() is just checking the header is there or not. The building detail is matter of Makefile of the extension library and developers can set the macro their c source file or -D for namke as they like (but mkmf.rb can't do that). This means - in windows, the header file is common for both win32 and win64. - we expect conftest (have_header) only existing check. It must not fail if the file is exist. So defining WIN32 (more common than _WIN64) is preferable. - including windows.h is meaningless because it can't help to determine WIN32 or _WIN64 . Or more work is need but another solution is set WIN32 or _WIN64 by mkmf.rb for compiling conftest.c, but I think if one want to build x64 version with win32 ruby or vice versa, it can't help but obstruct it. -- arton <artonx / yahoo.co.jp>