Files
CoolProp/Web/Docs/SWIG/Windows.html
2014-05-14 12:46:24 +02:00

465 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Getting started on Windows</title>
<link rel="stylesheet" type="text/css" href="Windows_files/style.css">
</head><body bgcolor="#ffffff">
<h1><a name="Windows"></a>3 Getting started on Windows </h1>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="#Windows_installation">Installation on Windows</a>
<ul>
<li><a href="#Windows_executable">Windows Executable</a>
</li></ul>
</li><li><a href="#Windows_examples">SWIG Windows Examples</a>
<ul>
<li><a href="#Windows_visual_studio">Instructions for using the Examples
with Visual Studio</a>
<ul>
<li><a href="#Windows_csharp">C#</a>
</li><li><a href="#Windows_java">Java</a>
</li><li><a href="#Windows_perl">Perl</a>
</li><li><a href="#Windows_python">Python</a>
</li><li><a href="#Windows_tcl">TCL</a>
</li><li><a href="#Windows_r">R</a>
</li><li><a href="#Windows_ruby">Ruby</a>
</li></ul>
</li><li><a href="#Windows_other_compilers">Instructions for using the
Examples with other compilers</a>
</li></ul>
</li><li><a href="#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a>
<ul>
<li><a href="#Windows_swig_exe">Building swig.exe on Windows</a>
<ul>
<li><a href="#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a>
</li><li><a href="#Windows_cygwin">Building swig.exe using Cygwin</a>
</li><li><a href="#Windows_building_alternatives">Building swig.exe
alternatives</a>
</li></ul>
</li><li><a href="#Windows_examples_cygwin">Running the examples on
Windows using Cygwin</a>
</li></ul>
</li><li><a href="#Windows_interface_file">Microsoft extensions and
other Windows quirks</a>
</li></ul>
</div>
<!-- INDEX -->
<p>
This chapter describes SWIG usage on Microsoft Windows.
Installing SWIG and running the examples is covered as well as building
the SWIG executable.
Usage within the Unix like environments MinGW and Cygwin is also
detailed.
</p>
<h2><a name="Windows_installation"></a>3.1 Installation on Windows</h2>
<p>
SWIG does not come with the usual Windows type installation program,
however it is quite easy to get started. The main steps are:
</p>
<ul>
<li>Download the swigwin zip package from the <a
href="http://www.swig.org/">SWIG website</a> and unzip into a directory.
This is all that needs downloading for the Windows platform.
</li><li>Set environment variables as described in the <a
href="#Windows_examples">SWIG Windows Examples</a> section in order to
run examples using Visual C++.
</li></ul>
<h3><a name="Windows_executable"></a>3.1.1 Windows Executable</h3>
<p>
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 <a
href="#Windows_swig_exe">Building swig.exe on Windows</a>.
</p>
<h2><a name="Windows_examples"></a>3.2 SWIG Windows Examples</h2>
<p>
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.
Later versions of Visual Studio should also be able to open and convert
these project files.
The C# examples come with .NET 2003 solution (.sln) and project files
instead of Visual C++ 6 project files.
The project files have been set up to execute SWIG in a custom build
rule for the SWIG interface (.i) file.
Alternatively run the <a href="#Windows_examples_cygwin">examples using
Cygwin</a>.
</p><p>
More information on each of the examples is available with the examples
distributed with SWIG (Examples/index.html).
</p><h3><a name="Windows_visual_studio"></a>3.2.1 Instructions for using
the Examples with Visual Studio</h3>
<p>
Ensure the SWIG executable is as supplied in the SWIG root directory in
order for the examples to work.
Most languages require some environment variables to be set <b>before</b>
running Visual C++.
Note that Visual C++ must be re-started to pick up any changes in
environment variables.
Open up an example .dsp file, Visual C++ will create a workspace for you
(.dsw file).
Ensure the Release build is selected then do a Rebuild All from the
Build menu.
The required environment variables are displayed with their current
values.
</p>
<p>
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
occurrences of the environment variables in the .dsp files with hard
coded values.
If you are interested in how the project files are set up there is
explanatory information in some of the language module's documentation.
</p>
<h4><a name="Windows_csharp"></a>3.2.1.1 C#</h4>
<p>
The C# examples do not require any environment variables to be set as a
C# project file is included.
Just open up the .sln solution file in Visual Studio .NET 2003 or later,
select Release Build, and do a Rebuild All from the Build menu.
The accompanying C# and C++ project files are automatically used by the
solution file.
</p>
<h4><a name="Windows_java"></a>3.2.1.2 Java</h4>
<p>
<b><tt>JAVA_INCLUDE</tt></b> : Set this to the directory containing
jni.h<br>
<b><tt>JAVA_BIN</tt></b> : Set this to the bin directory containing
javac.exe</p><p>
Example using JDK1.3:<br>
<tt>
JAVA_INCLUDE: D:\jdk1.3\include<br>
JAVA_BIN: D:\jdk1.3\bin<br>
</tt>
</p>
<h4><a name="Windows_perl"></a>3.2.1.3 Perl</h4>
<p>
<b><tt>PERL5_INCLUDE</tt></b> : Set this to the directory containing
perl.h<br>
<b><tt>PERL5_LIB</tt></b> : Set this to the Perl library including path
for linking</p><p>
Example using nsPerl 5.004_04:</p><p>
<tt>
PERL5_INCLUDE: D:\nsPerl5.004_04\lib\CORE<br>
PERL5_LIB: D:\nsPerl5.004_04\lib\CORE\perl.lib<br>
</tt>
</p>
<h4><a name="Windows_python"></a>3.2.1.4 Python</h4>
<p>
<b><tt>PYTHON_INCLUDE</tt></b> : Set this to the directory that contains
python.h<br>
<b><tt>PYTHON_LIB</tt></b> : Set this to the python library including
path for linking</p><p>
Example using Python 2.1.1:<br>
<tt>
PYTHON_INCLUDE: D:\python21\include<br>
PYTHON_LIB: D:\python21\libs\python21.lib<br>
</tt>
</p>
<h4><a name="Windows_tcl"></a>3.2.1.5 TCL</h4>
<p>
<b><tt>TCL_INCLUDE</tt></b> : Set this to the directory containing tcl.h<br>
<b><tt>TCL_LIB</tt></b> : Set this to the TCL library including path for
linking</p><p>
Example using ActiveTcl 8.3.3.3 <br>
<tt>
TCL_INCLUDE: D:\tcl\include<br>
TCL_LIB: D:\tcl\lib\tcl83.lib<br>
</tt>
</p>
<h4><a name="Windows_r"></a>3.2.1.6 R</h4>
<p>
<b><tt>R_INCLUDE</tt></b> : Set this to the directory containing R.h<br>
<b><tt>R_LIB</tt></b> : Set this to the R library (Rdll.lib) including
path for linking. The library needs to be built as described in the R
README.packages file (the pexports.exe approach is the easiest).</p><p>
Example using R 2.5.1:<br>
<tt>
R_INCLUDE: C:\Program Files\R\R-2.5.1\include<br>
R_LIB: C:\Program Files\R\R-2.5.1\bin\Rdll.lib<br>
</tt>
</p>
<h4><a name="Windows_ruby"></a>3.2.1.7 Ruby</h4>
<p>
<b><tt>RUBY_INCLUDE</tt></b> : Set this to the directory containing
ruby.h<br>
<b><tt>RUBY_LIB</tt></b> : Set this to the ruby library including path
for linking</p><p>
Example using Ruby 1.6.4:<br>
<tt>
RUBY_INCLUDE: D:\ruby\lib\ruby\1.6\i586-mswin32<br>
RUBY_LIB: D:\ruby\lib\mswin32-ruby16.lib<br>
</tt>
</p>
<h3><a name="Windows_other_compilers"></a>3.2.2 Instructions for using
the Examples with other compilers</h3>
<p>
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.
</p>
<h2><a name="Windows_cygwin_mingw"></a>3.3 SWIG on Cygwin and MinGW</h2>
<p>
SWIG can also be compiled and run using <a href="http://www.cygwin.com/">Cygwin</a>
or <a href="http://www.mingw.org/">MinGW</a> 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.
</p>
<h3><a name="Windows_swig_exe"></a>3.3.1 Building swig.exe on Windows</h3>
<p>
If you want to replicate the build of swig.exe that comes with the
download, follow the MinGW instructions below.
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.
</p>
<h4><a name="Windows_mingw_msys"></a>3.3.1.1 Building swig.exe using
MinGW and MSYS</h4>
<p>
The short abbreviated instructions follow...
</p>
<ul>
<li>Install MinGW and MSYS from the <a href="http://www.mingw.org/">MinGW</a>
site. This provides a Unix environment on Windows.
</li><li>Follow the usual Unix instructions in the README file in
the SWIG root directory to build swig.exe from the MinGW command prompt.
</li></ul>
<p>
The step by step instructions to download and install MinGW and MSYS,
then download and build the latest version of SWIG from SVN follow...
Note that the instructions for obtaining SWIG from SVN are also online
at <a href="http://www.swig.org/svn.html">SWIG SVN</a>.
</p>
<p>
<b>Pitfall note:</b>
Execute the steps in the order shown and don't use spaces in path names.
In fact it is best to use the default installation directories.
</p>
<ol>
<li>
Download the following packages from the <a
href="http://www.mingw.org/download.shtml">MinGW download page</a>
or <a href="http://sourceforge.net/projects/mingw/files/">MinGW
SourceForge download page</a>.
Note that at the time of writing, the majority of these are in the
Current
release list and some are in the Snapshot or Previous release list.
<ul>
<li>MinGW-3.1.0-1.exe</li>
<li>MSYS-1.0.11-2004.04.30-1.exe</li>
<li>msysDTK-1.0.1.exe</li>
<li>bison-2.0-MSYS.tar.gz</li>
<li>msys-autoconf-2.59.tar.bz2</li>
<li>msys-automake-1.8.2.tar.bz2</li>
</ul>
</li>
<li>
Install MinGW-3.1.0-1.exe (C:\MinGW is default location.)
</li>
<li>
Install MSYS-1.0.11-2004.04.30-1.exe. Make sure you install it on the
same
windows drive letter as MinGW (C:\msys\1.0 is default).
In the post install script,
<ul>
<li>Answer y to the "do you wish to continue with the post install?"</li>
<li>Answer y to the "do you have MinGW installed?"</li>
<li>Type in the the folder in which you installed MinGW (C:/MinGW is
default)</li>
</ul>
</li>
<li>
Install msysDTK-1.0.1.exe to the same folder that you installed MSYS
(C:\msys\1.0 is default).
</li>
<li>
Copy the following to the MSYS install folder (C:\msys\1.0 is
default):
<ul>
<li>msys-automake-1.8.2.tar.bz2</li>
<li>msys-autoconf-2.59.tar.bz2</li>
<li>bison-2.0-MSYS.tar.gz</li>
</ul>
</li>
<li>
Start the MSYS command prompt and execute:
<div class="shell"><pre>cd /
tar -jxf msys-automake-1.8.2.tar.bz2
tar -jxf msys-autoconf-2.59.tar.bz2
tar -zxf bison-2.0-MSYS.tar.gz
</pre></div>
</li>
<li>
To get the latest SWIG SVN (version from Subversion source control),
type in the following:
<div class="shell"><pre>mkdir /usr/src
cd /usr/src
svn co https://swig.svn.sourceforge.net/svnroot/swig/trunk swig
</pre></div>
<b>Pitfall note:</b>
If you want to check out SWIG to a different folder to the proposed
/usr/src/swig, do not use MSYS emulated windows drive letters, because
the autotools will fail miserably on those.
</li>
<li>
You are now ready to build SWIG. Execute the following commands to
build swig.exe:
<div class="shell"><pre>cd /usr/src/swig
./autogen.sh
./configure
make
</pre></div>
</li>
</ol>
<h4><a name="Windows_cygwin"></a>3.3.1.2 Building swig.exe using Cygwin</h4>
<p>
Note that SWIG can also be built using Cygwin.
However, SWIG will then require the Cygwin DLL when executing.
Follow the Unix instructions in the README file in the SWIG root
directory.
Note that the Cygwin environment will also allow one to regenerate the
autotool generated files which are supplied with the release
distribution.
These files are generated using the <tt>autogen.sh</tt> script and will
only need regenerating in circumstances such as changing the build
system.
</p>
<h4><a name="Windows_building_alternatives"></a>3.3.1.3 Building
swig.exe alternatives</h4>
<p>
If you don't want to install Cygwin or 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.
</p>
<h3><a name="Windows_examples_cygwin"></a>3.3.2 Running the examples on
Windows using Cygwin</h3>
<p>
The examples and test-suite work as successfully on Cygwin as on any
other Unix operating system.
The modules which are known to work are Python, Tcl, Perl, Ruby, Java
and C#.
Follow the Unix instructions in the README file in the SWIG root
directory to build the examples.
</p>
<h2><a name="Windows_interface_file"></a>3.4 Microsoft extensions and
other Windows quirks</h2>
<p>
A common problem when using SWIG on Windows are the Microsoft function
calling conventions which are not in the C++ standard.
SWIG parses ISO C/C++ so cannot deal with proprietary conventions such
as <tt>__declspec(dllimport)</tt>, <tt>__stdcall</tt> etc.
There is a Windows interface file, <tt>windows.i</tt>, to deal with
these calling conventions though.
The file also contains typemaps for handling commonly used Windows
specific types such as <tt>__int64</tt>, <tt>BOOL</tt>, <tt>DWORD</tt>
etc.
Include it like you would any other interface file, for example:
</p>
<div class="code"><pre>%include &lt;windows.i&gt;
__declspec(dllexport) ULONG __stdcall foo(DWORD, __int32);
</pre></div>
</body></html>