3. WIN32
Prev | Chapter 2. Compilation and Installation | Next

## 3. WIN32

The easiest way to install YAZ on Windows is by downloading an installer from here. The installer comes with source too - in case you wish to compile YAZ with different Compiler options etc.

### 3.1. Compiling from Source on WIN32

YAZ is shipped with "makefiles" for the NMAKE tool that comes with Microsoft Visual Studio. Version 6 and .NET has been tested. We expect that YAZ compiles with version 5 as well.

Start a command prompt and switch the sub directory `WIN` where the file `makefile` is located. Customize the installation by editing the `makefile` file (for example by using notepad). The following summarizes the most important settings in that file:

`DEBUG`

  If set to 1, the software is compiled with debugging libraries (code generation is multi-threaded debug DLL). If set to 0, the software is compiled with release libraries (code generation is multi-threaded DLL).

`HAVE_TCL`, `TCL`

  If `HAVE_TCL` is set to 1, nmake will use the ASN.1 compiler (Tcl based). You must set `TCL` to the full path of the Tcl interpreter.

  If you do not have Tcl installed, set `HAVE_TCL` to 0.

`HAVE_BISON`, `BISON`

  If GNU Bison is present, you might set `HAVE_ICONV` to 1 and specify the Bison executable in `BISON`. Bison is only required if you use the git version of YAZ or if you modify the grammar for CQL (`cql.y`).

  A Windows version of GNU Bison is part of unxutils.

`HAVE_ICONV`, `ICONV_DIR`

  If `HAVE_ICONV` is set to 1, YAZ is compiled with iconv support. In this configuration, set `ICONV_DIR` to the iconv source directory.

`HAVE_LIBXML2`, `LIBXML2_DIR`

  If `HAVE_LIBXML2` is set to 1, YAZ is compiled with SRU support. In this configuration, set `LIBXML2_DIR` to the libxml2 source directory and `ZLIB_DIR` to the zlib directory.

  Windows versions of libxslt, libxml2, zlib and iconv can be found Igor Zlatković' site.

  ### Note

  YAZ is not using zlib but libxml2 is depending on it.

`HAVE_LIBXSLT`, `LIBXSLT_DIR`

  If `HAVE_LIBXSLT` is set to 1, YAZ is compiled with XSLT support. In this configuration, set `LIBXSLT_DIR` to the libxslt source directory.

  ### Note

  libxslt depends libxml2.

`HAVE_ICU`, `ICU_DIR`

  If `HAVE_ICU` is set to 1, YAZ is compiled with ICU support. In this configuration, set `ICU_DIR` to the ICU source directory.

When satisfied with the settings in the makefile, type

          nmake

### Note

If the `nmake` command is not found on your system you probably haven't defined the environment variables required to use that tool. To fix that, find and run the batch file `vcvars32.bat`. You need to run it from within the command prompt or set the environment variables "globally"; otherwise it doesn't work.

If you wish to recompile YAZ - for example if you modify settings in the `makefile` you can delete object files, etc by running.

          nmake clean

The following files are generated upon successful compilation:

`bin/yaz4.dll` / `bin/yaz4d.dll`

  YAZ Release/Debug DLL.

`lib/yaz4.lib` / `lib/yaz4d.lib`

  Import library for `yaz4.dll` / `yaz4d.dll`.

`bin/yaz_cond4.dll` / `bin/yaz_cond4d.dll`

  Release/Debug DLL for condition variable utilities (condvar.c).

`lib/yaz_cond4.lib` / `lib/yaz_cond4d.lib`

  Import library for `yaz_cond4.dll` / `yaz_cond4d.dll`.

`bin/yaz_icu4.dll` / `bin/yaz_icu4d.dll`

  Release/Debug DLL for the ICU wrapper utility. Only build if HAVE_ICU is 1.

`lib/yaz_icu4.lib` / `lib/yaz_icu4d.lib`

  Import library for `yaz_icu4.dll` / `yaz_icu4d.dll`.

`bin/yaz-ztest.exe`

  Z39.50 multi-threaded test/example server. It's a WIN32 console application.

`bin/yaz-client.exe`

  YAZ Z39.50 client application. It's a WIN32 console application. See chapter YAZ client for more information.

`bin/yaz-icu.exe`

  This program exposes the ICU wrapper library if that is enabled for YAZ. Only if ICU is available this program is build.

`bin/zoomsh.exe`

  Simple console application implemented on top of the ZOOM functions. The application is a command line shell that allows you to enter simple commands to perform ZOOM operations.

`bin/zoomtst1.exe`, `bin/zoomtst2.exe`, ..

  Several small applications that demonstrates the ZOOM API.

### 3.2. How to make apps using YAZ on WIN32

This section will go though the process of linking your WIN32 applications with YAZ.

Some people are confused by the fact that we use the nmake tool to build YAZ. They think they have to do that too - in order to make their WIN32 applications work with YAZ. The good news is that you don't have to. You can use the integrated environment of Visual Studio if desired for your own application.

When setting up a project or Makefile you have to set the following:

include path

  Set it to the `include` directory of YAZ.

import library `yaz4.lib`

  You must link with this library. It's located in the sub directory `lib` of YAZ. If you want to link with the debug version of YAZ, you must link against `yaz4d.lib` instead.

dynamic link library `yaz4.dll`

  This DLL must be in your execution path when you invoke your application. Specifically, you should distribute this DLL with your application.

Prev | Up | Next
2. UNIX | Home | Chapter 3. ZOOM