JNI - Alles klappt, bis zur bindung.
Hi,
Sobald MinGW mir die DLL fertig erstellt hat, gibt es Probleme mit der Bindung in die Klasse:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Link.hello()V
at Link.hello(Native Method)
at Link.main(Link.java:12)
Hier das minimalistische Beispiel:
Was habe ich denn übersehen??
Problem gelöst!
die .bat war falsch.
Sobald MinGW mir die DLL fertig erstellt hat, gibt es Probleme mit der Bindung in die Klasse:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Link.hello()V
at Link.hello(Native Method)
at Link.main(Link.java:12)
Hier das minimalistische Beispiel:
Zitat
create.bat
d:\Java\jdk1.6.0_02\bin\javac.exe Link.java
d:\Java\jdk1.6.0_02\bin\javah.exe Link
c:\MinGW\bin\gcc -c -I D:\Java\jdk1.6.0_02\include -I D:\Java\jdk1.6.0_02\include\win32 -DBUILD_DLL Library.c
c:\MinGW\bin\gcc -shared -o Library.dll -Wl,--out-implib,libtstdll.a Library.o
del Library.o
del libtstdll.a
del Link.h
d:\Java\jdk1.6.0_02\bin\java.exe Link
@pause
Zitat
Library.c
#include "Link.h"
#include <stdio.h>
JNIEXPORT void JNICALL
Java_Link_hello(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
Zitat
Link.java
class Link {
public native void hello();
static {
System.loadLibrary("Library");
}
public static void main(String[] args)
{
System.out.println("Gestartet");
Link link = new Link();
link.hello();
}
}
Was habe ich denn übersehen??
Problem gelöst!
die .bat war falsch.
Zitat
d:\Java\jdk1.6.0_02\bin\javac.exe Link.java
d:\Java\jdk1.6.0_02\bin\javah.exe Link
c:\MinGW\bin\gcc -Wl,--kill-at -I"d:\Java\jdk1.6.0_02\include" -I"d:\Java\jdk1.6.0_02\include\win32" -shared Library.c -o Library.dll
del Library.o
del libtstdll.a
del Link.h
d:\Java\jdk1.6.0_02\bin\java.exe Link
@pause
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »nocturne« (25. Juli 2007, 16:37)


