Rezime
Ovaj članak detaljno objašnjava proces pozivanja izvornog C/C++ koda (u DLL-u) iz Java pomoću JNI (Java izvorni interfejs). Ovaj članak pretpostavlja da je to znanje iz komandne linije "Visual C++", CL. Exe.
-
Uverite se da koristite verziju Microsoft SDK-a za Javu koja podržava JNI. JNI podrška je dodata u decembru 1998 u SDK verziju 3,1 i iznad.
-
Uverite se da Promenljiva okruženja, klasa, sadrži referencu na "[WINDIR] \Java\klases\klases.zip" i "C:" (pod pretpostavkom da je C: vaš razvojni pogon).
-
Uverite se da je direktorijum "[SDK-Java] \Bin" uključen u putanju (za JavaH, JVC i JView).
-
Uverite se da je Visual C++ ispravno podešen za upotrebu komandne linije. Za detalje pogledajte dokumentaciju programa Visual C++.
-
Napišite Java kôd:
public class TestJNI { public native void greetings(); static { System.loadLibrary("greet"); } public static void main(String args[]) { new TestJNI().greetings(); }}
-
Prevedi Java datoteku:
jvc TestJNI.java
-
Pokreni JavaH na generisanu datoteku klase:
javah -jni TestJNI
-
Napišite C/C++ kôd na osnovu generisane datoteke zaglavlja:
#include "TestJNI.h"#include <stdio.h>JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) { printf("Hello from Visual C++!");}
-
Kompajlirate C/C++ kôd:
cl greet.cpp -Ic:\sdk-java.31\include -Fegreet.dll -MD -LD
-
Testirajte aplikaciju:
jview TestJNI
VIŠE INFORMACIJA
Stvari koje treba obratiti pažnju:
-
U datoteci "poziv u sistem. utovari ()" izostavite oznaku tipa datoteke ". dll" iz filename imena izvorne biblioteke.
-
Da biste podržali zastareli izvorni kôd, samo neka funkcija DLL-a preusmeri poziv na zastareli kôd.
(c) Microsoft Corporation 1999, sva prava zadržana. Doprinos kompanije Džozef B. Hol, Microsoft Corporation.
Reference
Za informacije o podršci za Visual J++ i SDK za Java posetite sledeću Microsoft Web lokaciju: