JNI test
Ljubo Brglez
kreit at siol.net
Sat Sep 29 15:08:47 CEST 2001
Zdravo!
1. HelloWorld.java
------------------------
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
2. HelloWorldImp.c
-------------------------
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
3. ostale carovnije
-------------------------
javac HelloWorld.java
javah -classpath . -jni HelloWorld
gcc -I/opt/jdk1.3/include -I/opt/jdk1.3/include/linux -shared HelloWorldImp.c -o libhello.so
export LD_LIBRARY_PATH=.
java -classpath ../.:../jnitest jnitest.HelloWorld
4. exception
--------------------------
Exception in thread "main" java.lang.UnsatisfiedLinkError: displayHelloWorld
at jnitest.HelloWorld.displayHelloWorld(Native Method)
at jnitest.HelloWorld.main(HelloWorld.java:12)
Mislim, da bi lahko bil problem v pri gcc-ju. Verjetno napacni parametri, ko sem
delal shared library... Za solaris naj bi se naredilo tako:
cc -G -I/usr/local/java/include -I/usr/local/java/include/solaris HelloWorldImp.c -o libhello.so
Kako pa naj naredim z gcc ?
Any ideas ?
Ljubo Brglez
More information about the lugos-prog
mailing list