Kako poklicati izvorno (DLL) kodo iz Jave z JNI


Povzetek


V tem članku je podrobno predstavljen postopek klicanja izvorne kode C/C++ (v DLL-ju) iz Jave z JNI (vmesnik Java native). V tem članku je predvideno, da deluje poznavanje prevajalnika ukazne vrstice za Visual C++, CL. EXE.
  • Prepričajte se, da uporabljate različico Microsoftovega SDK za Javo, ki podpira JNI. Podpora za JNI je bila dodana v decembru 1998 v SDK različica 3,1 in novejša.
  • Prepričajte se, da spremenljivka okolja, CLASSPATH, vsebuje sklic na» [WINDIR] \Java\Classes\Classes.zip «in» C: «(ob predpostavki, da je C: je vaš razvojni pogon).
  • Prepričajte se, da je imenik» [SDK-Java] \Bin «vključen v vašo pot (za JavaH, JVC in JView).
  • Prepričajte se, da je Visual C++ pravilno nastavljen za uporabo ukazne vrstice. Če želite podrobnosti, si oglejte dokumentacijo za Visual C++.
  • Napišite kodo Java:
    public class TestJNI {   public native void greetings();   static {      System.loadLibrary("greet");   }   public static void main(String args[]) {      new TestJNI().greetings();   }}
  • Prevedite datoteko Java:
    jvc TestJNI.java
  • Zaženite JavaH v ustvarjeni datoteki razreda:
    javah -jni TestJNI
  • Napišite kodo C/C++, ki temelji na ustvarjeni datoteki glave:
    #include "TestJNI.h"#include <stdio.h>JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) {   printf("Hello from Visual C++!");}
  • Prevedite kodo C/C++:
    cl greet.cpp -Ic:\sdk-java.31\include -Fegreet.dll -MD -LD
  • Preskusite aplikacijo:
    jview TestJNI

VEČ INFORMACIJ


Stvari, ki jih morate zabeležiti:
  • V klicu na System. Klic LoadLibrary () izpustite pripono». dll «iz imena datoteke native Library.
  • Če želite podpirati podedovano izvorno kodo, preprosto nastavite funkcijo DLL za preusmeritev klica v podedovano kodo.
(c) Microsoft Corporation 1999, vse pravice pridržane. Prispevki Josepha B. Halla, Microsoft Corporation.

SKLICI


Če želite informacije o podpori za Visual J++ in SDK za Javo, obiščite to Microsoftovo spletno mesto: