diff options
Diffstat (limited to 'Examples/java/simple/index.html')
| -rw-r--r-- | Examples/java/simple/index.html | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/Examples/java/simple/index.html b/Examples/java/simple/index.html new file mode 100644 index 0000000..9729e6d --- /dev/null +++ b/Examples/java/simple/index.html @@ -0,0 +1,108 @@ +<html> +<head> +<title>SWIG:Examples:java:simple</title> +</head> + +<body bgcolor="#ffffff"> + + +<tt>SWIG/Examples/java/simple/</tt> +<hr> + +<H2>Simple Java Example</H2> + +<p> +This example illustrates how you can hook Java to a very simple C program containing +a function and a global variable. + +<h2>The C Code</h2> + +Suppose you have the following C code: + +<blockquote> +<pre> +/* File : example.c */ + +/* A global variable */ +double Foo = 3.0; + +/* Compute the greatest common divisor of positive integers */ +int gcd(int x, int y) { + int g; + g = y; + while (x > 0) { + g = x; + x = y % x; + y = g; + } + return g; +} +</pre> +</blockquote> + +<h2>The SWIG interface</h2> + +Here is a simple SWIG interface file: + +<blockquote> +<pre> +/* File: example.i */ +%module example + +extern int gcd(int x, int y); +extern double Foo; +</pre> +</blockquote> + +<h2>Compilation</h2> + +<ol> +<li><tt>swig -java <a href="example.i">example.i</a></tt> +<p> +<li>Compile <tt><a href="example_wrap.c">example_wrap.c</a></tt> and <tt><a href="example.c">example.c</a></tt> +to create the extension <tt>libexample.so (unix)</tt>. +</ol> + +<h2>Using the extension</h2> + +Click <a href="runme.java">here</a> to see a program that calls our C functions from Java. +<p> +Compile the java files <tt><a href="example.java">example.java</a></tt> and <tt><a href="runme.java">runme.java</a></tt> +to create the class files example.class and runme.class before running runme in the JVM. Ensure that the libexample.so file is in your LD_LIBRARY_PATH before running. For example: +<blockquote> +<pre> +export LD_LIBRARY_PATH=. #ksh +javac *.java +java runme +</pre> +</blockquote> + +<h2>Key points</h2> + +<ul> +<li>Use the <tt>loadLibrary</tt> statement from java to load and access the generated java classes. For example: +<blockquote> +<pre> +System.loadLibrary("example"); +</pre> +</blockquote> + +<li>C functions work just like Java functions. For example: +<blockquote> +<pre> +int g = example.gcd(42,105); +</pre> +</blockquote> + +<li>C global variables are accessed through get and set functions in the module class. For example: +<blockquote> +<pre> +double a = example.get_Foo(); +example.set_Foo(20.0); +</pre> +</blockquote> +</ul> + +<hr> +</body> +</html> |
