Java native (JNI)

Tags:    java

Jeg leger med native metoder og følger i den forbindelse sun's tutorial (http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html).

Jeg har skrevet java-koden, genereret en .header fil og skrevet C++ koden. Men min cpp fil kan ikke kompileres. Problemet er tilsyneladende en #include <jni.h> statement. jni.h filen kan ikke findes! jeg har så prøvet med en komplet path til jni.h filen som ligger i java's include folder, men uden succes. Det giver afledte problemer.

spm: Når man include'r med <filnavn> hvor leder C++ linkeren så ? og kan man selv redigere/opsætte paths ?

spm: Jeg bruger Java 1.4.1 - er der nogen kendte problemer med JNI og/eller ting som skal gøres anderledes end ved 1.3.1 ?

Andre bud på forsøg ??



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hej,
for det første, hvilken C++ kompiler bruger du? Disse svar er møntet på GNU gcc kompileren, det afviger formentligt en smule hvis du bruger noget andet (Borland/Microsoft etc.)

spm1:
Når du inkluder med <> brackets leder kompileren ofte kun nogle prædefinerede stier, og derfor finder den ikke jni.h filen, da den jo følger med Java distributionen og ikke din C++ kompiler.
I gcc skal du derfor kompile med denne option: -I<path til java/include bibliotek>. Bemærk at jni.h filen inkluderer filen jni_md.h som ligger i java/include/<platform>/ og derfor skal dette bibliotek også inkluderes med en -I.

spm2:
Der er ingen problemer ved at bruge 1.4.1 i stedet for 1.3.1

Du kan risikere at din kompiler brokker sig over at den ikke kender datatypen __int64 som optræder i inklude filerne. Hvis det sker kan du bare sætte -D__int64="long long" på når du kompiler din C++ kode.

Jeg leger med native metoder og følger i den forbindelse sun's tutorial (http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html).

Jeg har skrevet java-koden, genereret en .header fil og skrevet C++ koden. Men min cpp fil kan ikke kompileres. Problemet er tilsyneladende en #include <jni.h> statement. jni.h filen kan ikke findes! jeg har så prøvet med en komplet path til jni.h filen som ligger i java's include folder, men uden succes. Det giver afledte problemer.

spm: Når man include'r med <filnavn> hvor leder C++ linkeren så ? og kan man selv redigere/opsætte paths ?

spm: Jeg bruger Java 1.4.1 - er der nogen kendte problemer med JNI og/eller ting som skal gøres anderledes end ved 1.3.1 ?

Andre bud på forsøg ??





User
Bruger #55 @ 13.11.02 18:05

spm: Når man include'r med <filnavn> hvor leder C++ linkeren så ? og kan man selv redigere/opsætte paths ?

spm: Jeg bruger Java 1.4.1 - er der nogen kendte problemer med JNI og/eller ting som skal gøres anderledes end ved 1.3.1 ?

Andre bud på forsøg ??


Hvordan du sætter path op til C++ afhænger af hvilken kompiler du bruger, hvis det er visual C++ skal du gå i tools->options->directories og vælge include files i dropdown listen.
Java er lavet så det er bagud kompatibelt du vil altså altid kunne kompile kode fra 1.3.1 i 1.4.1, men om de har tilføjet nyt og lavet nogle functioner obsolete kan jeg ikke sige, men det kunne godt ligne dem :).

Edit : når du bruger #include <fil.h> vil den lede i din include path, når du bruger #include "fil.h" er det den absolutte sti i relation til dit projekt bibliotek.
[Redigeret d. 13/11-02 18:06:40 af Kaspar Pedersen][Redigeret d. 13/11-02 18:07:09 af Kaspar Pedersen]



t