_DLL is defined by MSVC when building against a DLL version of the CRT library. It bears no relation to whether we are building a DLL or not. That is, we can build a DLL against a static CRT, or a static lib against a dynamicaly linked CRT. See more detail at http://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx This gets DLL version of glut linking correctly both with MinGW and MSVC. PS: GL/gl.h (and others) must be fixed too.