GLFW 2.7.2 Windows binary distribution

  1. Introduction
  2. Using GLFW
  3. Version history
  4. Directory structure of the GLFW distribution
  5. Contacting the project
  6. Acknowledgements

1. Introduction

Welcome to version 2.7.2 of the GLFW OpenGL framework. GLFW is a free, open source, portable framework for OpenGL application development. In short, it is a library that provides a powerful API for handling operating system specific tasks, such as opening an OpenGL window, reading keyboard, mouse, joystick and time input, creating threads, and more.

GLFW 2.7 is expected to be the last major release of the 2.x series, with most development now being done on what will become version 3.0.

This release brings support for OpenGL 3.2 on OS X Lion and adds a number of bug fixes for minor issues in 2.7.1.

Please note that this is the Windows binary only distribution of GLFW. It contains static, dynamic and link libraries built with and using the runtimes of a number of common Windows compilers. More specifically, it contains files for the following compilers:

For the full source distribition, go to the project website or to the project page on SF.net.

2. Using GLFW

There are two aspects to using GLFW:

  1. How does the GLFW API work
  2. How to compile programs that use GLFW

The first point is covered in the GLFW Users Guide and the GLFW Reference Manual, and we suggest that you read at least the Users Guide, since it's a good introduction to the GLFW API.

Designing and compiling programs that use GLFW is not very difficult. A few rules for successfully designing GLFW-based programs are presented in the following sections.

2.1 Include the GLFW header file

In the files of your program where you use OpenGL or GLFW, you should include the GL/glfw.h header file, i.e.:

#include <GL/glfw.h>

This defines all the constants, types and function prototypes of the GLFW API. It also includes the gl.h and GL/glu.h header files, and - this is very important - it defines all the necessary constants and types that are necessary for the OpenGL headers to work on different platforms.

For example, under Microsoft Windows you are normally required to include windows.h before you include GL/gl.h. This would however make your code dependent on the Windows platform, or at least require your program to check which platform it is being compiled on. The GLFW header file takes care of this for you, not by including windows.h, but rather by itself duplicating the necessary parts of it. This way, the namespace won't be cluttered by the entire Windows API.

In other words:

Also note that if you are using an OpenGL extension loading library such as GLEW, you should include the GLEW header before the GLFW one. The GLEW header defines macros that disable any gl.h that the GLFW header includes and GLEW will work as expected.

2.2 Link with the right libraries

2.2.1 Windows static library

If you link with the static version of GLFW, it is also necessary to link with some system libraries that GLFW uses.

When linking a program under Windows that uses the static version of GLFW, you must also link with the following libraries: opengl32, user32 and kernel32. Some of these libraries may be linked with by default by your compiler. In the table below you can see the minimum required link options for each supported Windows compiler (you may want to add other libraries as well, such as glu32):

Compiler Link options
Borland C++ Builder glfw.lib opengl32.lib
Cygwin See Unix static library below
LCC-Win32 glfw.lib opengl32.lib
Microsoft Visual C++ glfw.lib opengl32.lib user32.lib
MinGW32 -lglfw -lopengl32
OpenWatcom glfw.lib opengl32.lib user32.lib

2.2.2 Windows DLL

To compile a program that uses the DLL version of GLFW, you need to define the GLFW_DLL constant. This can either be done with a compiler switch, typically by adding -DGLFW_DLL to the list of compiler options. You can also do it by adding the following line to all your source files before including the GLFW header file:

#define GLFW_DLL

When linking a program under Windows that uses the DLL version of GLFW, the only library you need to link with for GLFW to work is glfwdll. In the table below you can see the minimum required link options for each supported Windows compiler (you may want to add other libraries as well, such as opengl32 and glu32):

Compiler Link options
Borland C++ Builder glfwdll.lib
Cygwin -lglfwdll
LCC-Win32 glfwdll.lib
Microsoft Visual C++ glfwdll.lib
MinGW32 -lglfwdll
OpenWatcom glfwdll.lib

3. Version history

v2.7.2

4. Directory structure of the GLFW distribution

Here is an overview of the directory structure of the GLFW distribution:

docsGLFW manuals in PDF format
include 
   GLThe GLFW C/C++ include file
lib-mingwBinaries for MinGW
lib-msvc90 
   debugBinaries for Visual C++ 2008 debug configuration
   releaseBinaries for Visual C++ 2008 release configuration
lib-msvc100 
   debugBinaries for Visual C++ 2010 debug configuration
   releaseBinaries for Visual C++ 2010 release configuration

5. Contacting the project

The official website for GLFW is glfw.org. It contains the latest version of GLFW, news and other information that is useful for OpenGL development.

If you have questions related to the use of GLFW, we have a user's web forum, and a user's mailing list on SF.net, and the registered IRC channel #glfw on Freenode.

If you have a bug to report, a patch to submit or a feature you'd like to request, please file it in one of the GLFW trackers on SF.net.

Finally, if you're interested in helping out with the development of GLFW or porting it to your favorite platform, we have a developer's mailing list, or you could join us on #glfw.

6. Acknowledgements

GLFW exists because people around the world donated their time and lent their skills. Special thanks go out to: