file: README.WINDOWS G. Moody 8 June 2005
Last revised: 21 July 2013
Making a native Windows version of the WFDB library
On MS-Windows, the procedure described in 'INSTALL' generates a WFDB library
that depends upon Cygwin's POSIX emulation library (cygwin1.dll) to provide a
Unix-like operating environment, thus assuring that WFDB applications will
behave on MS-Windows as much as possible like they do on other platforms. It is
also possible, though not generally recommended, to make a WFDB library that
depends only on the native libraries provided with MS-Windows. You might need a
native Windows version of the WFDB library if you wish to link it to other code
that must also be linked with Windows native libraries.
The method outlined below will allow you to create a Windows native version of
the WFDB library that does not depend on Cygwin's POSIX emulation library or any
third party libraries other than those provided with MS-Windows, and
(optionally) curl, which the WFDB library uses for reading data directly from
web servers. It uses MinGW, a minimalist development environment for native
MS-Windows libraries and applications.
1. Install MinGW and MSYS using the automated installer tool (mingw-get-inst,
also called the "Graphical User Interface Installer" or the "GUI first time
installer tool") following the instructions at
Be sure to select the option to use the latest available packages. Use the
default installation directory (c:\mingw), and choose all of the optional
2. Download the most recent curl source tarball from
As of June 2013, the most recent version was curl-7.31.0.tar.gz. Save it in
your MinGW home directory (by default, c:\MinGW\msys\1.0\home\User).
3. Download the most recent WFDB source tarball from
and save it in your MinGW home directory.
4. Open a MinGW terminal window by clicking on Start -> Programs -> MinGW ->
MinGW Shell. Perform the remaining steps of the installation by typing into
5. Unpack the tarballs using these commands:
tar xfvz curl*.tar.gz
tar xfvz wfdb.tar.gz
These commands will create two directories, named curl-7.x.y and wfdb-10.m.n,
where x, y, m and n will depend on the version numbers of the packages you
6. Compile and install the curl package first:
The ./configure and make commands may require several minutes each.
7. Compile and install the WFDB Software Package after installing curl:
1. The native Windows libraries created by this procedure are installed in
c:\MinGW\msys\1.0\usr\bin; their names are libcurl-4.dll and wfdb-10.5.dll.
2. A mostly complete set of WFDB applications (except for WAVE) is also
installed in the same directory. Use them at your own risk, since they may
not behave in exactly the same way as the standard versions of the same
applications. You can test the compiled WFDB library and applications using
(either before or after 'make install'). A handful of the tests performed by
'make check' will fail because they generate text files with MSDOS-style line
terminators that don't match the POSIX-style line terminators that
'make check' expects; this is normal and is not an indication of problems.
3. Copy the libraries and applications to a directory in your Windows PATH if
you want to run them using cmd.exe (as, for example, in a DOS box). Avoid
installing them in any location that has a space in its pathname.
4. If you don't want your compiled WFDB library to be able to read data via
HTTP, you can skip steps 2 and 6 above, and add --without-netfiles to the
configure command in step 7.
5. You may optionally install OpenSSL (http://openssl.org/) before configuring
and compiling curl (step 6) if you wish to use the compiled library or
applications to read data via HTTPS (for example, directly from your
PhysioNetWorks projects). OpenSSL is not required by WFDB applications for
reading data from local files or from web servers via HTTP. See
for details on OpenSSL and other optional libraries.
Using a compiler other than gcc
The procedure in the previous section uses MinGW's gcc to produce WFDB and curl
DLLs in Windows native format. You can use any other compiler that is compatible
with Windows DLLs to compile application code and link it to these WFDB and curl
DLLs, and to other third-party DLLs if you wish.
It is not possible to compile or use WAVE under MS-Windows except by using
Cygwin gcc and the Cygwin X11 and XView libraries.
Compiling the WFDB library with a compiler other than gcc is unsupported. gcc is
free, is of very high quality, and is supported; if you use another compiler,
you are on your own. Your feedback is welcome, but we do not use any commercial
compilers and cannot help you learn how to use them.
If you do not use gcc, you must do one of the following:
* Use your compiler in ANSI/ISO C mode if this is supported (see your compiler
* Define the symbol MSDOS (to any value) when compiling the WFDB Software
If you do neither of these steps, your compiler will generate a defective WFDB
DLL that assumes that files are always opened in so-called text mode, resulting
in errors when reading and writing signal and annotation files (which are binary
files). You can check to see if this has happened by running the command
rdsamp -r 100s
which should yield 21600 numbered lines of output, ending with
21596 982 995
21597 978 989
21598 975 988
21599 975 989
If the output ends after 940 lines, you have a defective WFDB DLL and you will
need to follow the instructions above to correct the problem.