<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Shared_Libraries_amb_Java</id>
	<title>Shared Libraries amb Java - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Shared_Libraries_amb_Java"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Shared_Libraries_amb_Java&amp;action=history"/>
	<updated>2026-08-30T06:19:25Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Shared_Libraries_amb_Java&amp;diff=3006&amp;oldid=prev</id>
		<title>Joan: /* Step 6: Run the Program */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Shared_Libraries_amb_Java&amp;diff=3006&amp;oldid=prev"/>
		<updated>2009-05-21T00:17:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Step 6: Run the Program&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Vull fer l'exemple mínim (HelloWorld) per crear una llibreria compartida (shared library, .so) amb C, i que la pugui utilitzar amb Java.&lt;br /&gt;
&lt;br /&gt;
Aquest és el cas que es dóna amb MidiShare, que està escrit amb C++ però que es pot utilitzar amb Java gràcies a la shared library libJMidi&lt;br /&gt;
&lt;br /&gt;
Segueixo el tutorial http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/stepbystep/index.html&lt;br /&gt;
&lt;br /&gt;
Explicació de Shared Libraries: http://www.network-theory.co.uk/docs/gccintro/gccintro_25.html&lt;br /&gt;
&lt;br /&gt;
==Step 1: Write the Java Code==&lt;br /&gt;
HelloWorld.java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class HelloWorld {&lt;br /&gt;
    public native void displayHelloWorld();&lt;br /&gt;
&lt;br /&gt;
    static {&lt;br /&gt;
        System.loadLibrary(&amp;quot;hello&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Main.java:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        new HelloWorld().displayHelloWorld();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Step 2: Compile the Java Code==&lt;br /&gt;
Ho he fet amb l'Eclipse. En el directori bin/ es crea HelloWorld.class i Main.class&lt;br /&gt;
&lt;br /&gt;
==Step 3: Create the .h File==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /home/joan/workspace/Shared_Library/bin/&lt;br /&gt;
$ javah -jni HelloWorld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i es crea el fitxer HelloWorld.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* DO NOT EDIT THIS FILE - it is machine generated */&lt;br /&gt;
#include &amp;lt;jni.h&amp;gt;&lt;br /&gt;
/* Header for class HelloWorld */&lt;br /&gt;
&lt;br /&gt;
#ifndef _Included_HelloWorld&lt;br /&gt;
#define _Included_HelloWorld&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
/*&lt;br /&gt;
 * Class:     HelloWorld&lt;br /&gt;
 * Method:    displayHelloWorld&lt;br /&gt;
 * Signature: ()V&lt;br /&gt;
 */&lt;br /&gt;
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld&lt;br /&gt;
  (JNIEnv *, jobject);http://www.network-theory.co.uk/docs/gccintro/gccintro_25.html&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Step 4: Write the Native Method Implementation==&lt;br /&gt;
&lt;br /&gt;
HelloWorldImp.c:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;jni.h&amp;gt;&lt;br /&gt;
#include &amp;quot;HelloWorld.h&amp;quot;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
JNIEXPORT void JNICALL &lt;br /&gt;
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) &lt;br /&gt;
{&lt;br /&gt;
  printf(&amp;quot;Hello world!\n&amp;quot;);&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Step 5: Create a Shared Library ==&lt;br /&gt;
&lt;br /&gt;
Creem la shared library:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc -shared -Wall -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux HelloWorldImp.c -o libhello.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Step 6: Run the Program==&lt;br /&gt;
&lt;br /&gt;
i executem l'aplicació:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ java -Djava.library.path=/home/joan/workspace/Shared_Library/bin/ Main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Autor}}, maig 2009&lt;br /&gt;
[[Category: Programació Java]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>