<html> <head> <title>SWIG:Examples:java:simple</title> </head> <body bgcolor="#ffffff"> <tt>SWIG/Examples/java/simple/</tt> <hr> <H2>Simple Java Example</H2> <tt>$Header: /cvs/projects/SWIG/Examples/java/simple/Attic/index.html,v 1.1.2.1 2001/05/25 14:53:48 cheetah Exp $</tt><br> <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="main.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="main.java">main.java</a></tt> to create the class files example.class and main.class before running main 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 main </pre> </blockquote> <h2>Key points</h2> <ul> <li>Use the <tt>import</tt> and <tt>import</tt> statements from java to load and access the generated java classes. For example: <blockquote> <pre> import example; 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>