# Compiling psqlODBC on Windows

This page describes how to build the PostgreSQL ODBC Driver on Win32 platforms. Microsoft Visual C++ version 6.0 or Microsoft Visual C++ 2005 Edition. Other compilers may work but have not been formally tested. psqlODBC may be built either in the VC++ IDE or from the command line:

## IDE Method

A Microsoft Visual Studio project file (and workspace) is included in the source tree.

psqlodbc.dsp can be used with Microsoft Visual C++ 6.0.

psqlodbc.proj and psqlodbc.sln can be used with Microsoft Visual C++ 2005 Edition (including the Express edition which can be downloaded free of charge from http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx)

Preparation before the build:

1. The Windows distribution of PostgreSQL will install the required headers and libraries into C:\Program Files\PostgreSQL\9.1
2. OpenSSL should be installed into C:\OpenSSL (OpenSSL binaries can be downloaded from http://www.slproweb.com/products/Win32OpenSSL.html)

If you want to change the installation arrangement, it is necessary to edit the project settings.

Note:

The default build settings will create the following driver:

1. UNICODE support.
2. libpq and SSL equipped are supported.
3. Kerberos are supported peculiar by psqlODBC.
4. ODBCVER is 0x0351.
5. The driver filename is "psqlodbc35w.dll".

## Command Line Method

Build method:

1. Use NMAKE.exe to build the dll for the 32bit environment.
   `C:\psqlodbc\> nmake /f win32.mak CFG=Release ALL`
   Possible configurations are Release and Debug.
   Possible build types are ALL or CLEAN.
2. Use NMAKE.exe to build the dll for the 64bit environment.
   `C:\psqlodbc\> nmake /f win64.mak CFG=Release ALL`
   Possible configurations are Release and Debug.
   Possible build types are ALL or CLEAN.

Note:

The following build options may be used:

Valiable | Values
CFG | Release(default), or Debug
PG_INC | $(PROGRAMFILES)\PostgreSQL\9.1\include
PG_LIB | $(PROGRAMFILES)\PostgreSQL\9.1\lib\ms
SSL_INC | C:\OpenSSL\include
SSL_LIB | C:\OpenSSL\lib\VC
LINKMT | MT
ANSI_VERSION | No (at the Yes, output dll name to psqlodbc30a.dll)
MSDTC | Yes (but VC++ 6.0 default is no)
USE_LIBPQ | No (libpq is required)
USE_SSPI | Yes (secur32 and crypt32 is required)
USE_GSS | Yes (use gssapi required, this option is effective at 64bit now)

1. UNICODE is default (psqlodbc35w.dll), unless ANSI_VERSION isselected (psqlodbc30a.dll)
2. libpq.dll is used supported.
3. SSL and Kerberos are original equipment.
4. ODBCVER becomes 0x351 when UNICODE is selected, or becomes 0x0300 with ANSI_VERSION == Yes.
5. If MSDTC == Yes, "pgxalib.dll" is created.
6. In the MSDTC mode, ANSI_VERSION also creates "pgenlista.dll". or UNICODE creates "pgenlist.dll".

.