# 2 Getting started on Windows

- Installation on Windows
  - Windows Executable
- SWIG Windows Examples
  - Instructions for using the Examples with Visual C++
    - Python
    - TCL
    - Perl
    - Java
    - Ruby
  - Instructions for using the Examples with other compilers
- SWIG on Cygwin and Mingw
  - Building swig.exe on Windows
    - Building swig.exe using Cygwin and Mingw
    - Building swig.exe alternatives
  - Running the examples on Windows using Cygwin

## 2.1 Installation on Windows

SWIG does not come with the usual Windows type installation program, however it is quite easy to get started. The main steps are:

- Download the swigwin zip package from the SWIG website and unzip into a directory. This is all that needs downloading for the Windows platform.
- Set environment variables as described in order to run some examples using Visual C++.

### 2.1.1 Windows Executable

The swigwin distribution contains the SWIG Windows executable, swig.exe, which will run on 32 bit versions of Windows, ie Windows 95/98/ME/NT/2000/XP. If you want to build your own swig.exe have a look at the supplied instructions.

## 2.2 SWIG Windows Examples

Using Microsoft Visual C++ is the most common approach to compiling and linking SWIG's output. The Examples directory has a few Visual C++ project files (.dsp files). These were produced by Visual C++ 6, although they should also work in Visual C++ 5. These project files have been set up to use SWIG in a custom build rule for the SWIG interface (.i) file. Alternatively run the examples using Cygwin.

More information on each of the examples is available with the examples on the SWIG Examples page which comes with the SWIG installation.

Note that no SWIG language runtime libraries have been supplied. The examples which have a Microsoft Visual C++ project file do not need the runtime libraries. In fact the vast majority of the examples do not need the SWIG runtime libraries.

### 2.2.1 Instructions for using the Examples with Visual C++

Ensure the SWIG executable is as supplied in the SWIG root directory in order for the examples to work. Each language requires some environment variables to be set before running Visual C++. Note that Visual C++ must be re-started to pick up any changes in environment variables. Open up the .dsp file, Visual C++ will create a workspace for you (.dsw file). Do a Rebuild All from the Build menu; the required environment variables are displayed with their current values.

The list of required environment variables for each module language is also listed below. They are usually set from the Control Panel and System properties, but this depends on which flavour of Windows you are running. If you don't want to use environment variables then change all occurences of the environment variables in the .dsp files with hard coded values. If you are interested in how the project files are set up have a look at the section on building extensions for your chosen language module.

#### 2.2.1.1 Python

`PYTHON_INCLUDE` : Set this to the directory that contains python.h
`PYTHON_LIB` : Set this to the python library including path for linking with

Example using Python 2.1.1:
`PYTHON_INCLUDE: d:\python21\include
PYTHON_LIB: d:\python21\libs\python21.lib
`

#### 2.2.1.2 TCL

`TCL_INCLUDE` : Set this to the directory containing tcl.h
`TCL_LIB` : Set this to the TCL library including path for linking with

Example using ActiveTcl 8.3.3.3
`TCL_INCLUDE: d:\tcl\include
TCL_LIB: d:\tcl\lib\tcl83.lib
`

#### 2.2.1.3 Perl

`PERL5_INCLUDE` : Set this to the directory containing perl.h and perl.lib
Example using nsPerl 5.004_04:

`PERL5_INCLUDE: D:\nsPerl5.004_04\lib\CORE
`

#### 2.2.1.4 Java

`JAVA_INCLUDE` : Set this to the directory containing jni.h
`JAVA_BIN` : Set this to the bin directory containing javac.exe

Example using JDK1.3:
`JAVA_INCLUDE: d:\jdk1.3\include
JAVA_BIN: d:\jdk1.3\bin
`

#### 2.2.1.5 Ruby

`RUBY_INCLUDE` : Set this to the directory containing ruby.h
`RUBY_LIB` : Set this to the ruby library including path for linking with

Example using Ruby 1.6.4:
`RUBY_INCLUDE: D:\ruby\lib\ruby\1.6\i586-mswin32
RUBY_LIB: D:\ruby\lib\mswin32-ruby16.lib
`

### 2.2.2 Instructions for using the Examples with other compilers

If you do not have access to Visual C++ you will have to set up project files / Makefiles for your chosen compiler. There is a section in each of the language modules detailing what needs setting up using Visual C++ which may be of some guidance. Alternatively you may want to use Cygwin as described in the following section.

## 2.3 SWIG on Cygwin and Mingw

SWIG can also be compiled and run using Cygwin which provides a Unix like front end to Windows and comes free with gcc, an ANSI C/C++ compiler. However, this is not a recommended approach as the prebuilt executable is supplied.

### 2.3.1 Building swig.exe on Windows

If you want to replicate the build of swig.exe that comes with the download, follow the following instructions. This is not necessary to use the supplied swig.exe. This information is provided for those that want to modify the SWIG source code in a Windows environment. Normally this is not needed, so most people will want to ignore this section.

#### 2.3.1.1 Building swig.exe using Cygwin and Mingw

- Install Cygwin
- Install Mingw
- Ensure that the Mingw bin directory is before the Cygwin bin directory in your path.
- Follow the usual Unix instructions in the README file in the SWIG root directory to build swig.exe.

Try running `./autogen.sh` from the SWIG root directory before running `./configure` in order to use the latest autoconf and automake tools.

Note that SWIG can be built using just Cygwin, i.e. no Mingw installed. However, the SWIG executable will then require the Cygwin DLL.

#### 2.3.1.2 Building swig.exe alternatives

If you don't want to install Cygwin and Mingw, use a different compiler to build SWIG. For example, all the source code files can be added to a Visual C++ project file in order to build swig.exe from the Visual C++ IDE.

### 2.3.2 Running the examples on Windows using Cygwin

Starting with SWIG-1.3.12 the examples and test-suite work almost as successfully on Cygwin (not using Mingw) as on any other Unix operating system. The modules which are known to work are Python, Tcl, Perl, Ruby and Java, but none of the runtime libraries. Follow the Unix instructions in the README file in the SWIG root directory to build the examples.

You may need to run `./autogen.sh` from the SWIG root directory before running `./configure` in order to make use of the latest autoconf and automake tools.