This article details the process of calling native C/C++ code (in a DLL) from Java using JNI (Java Native Interface). This article presumes a working knowledge of the Visual C++ command-line compiler, CL.EXE.
- Make sure that you are using a version of Microsoft's SDK for Java that supports JNI. JNI support was added in December of 1998 to SDK version 3.1 and above.
- Make sure that the environment variable, CLASSPATH, contains a reference to "[WINDIR]\Java\Classes\Classes.zip" and "C:" (assuming that C: is your development drive).
- Make sure that your "[SDK-Java]\Bin" directory is included in your path (for JavaH, JVC, and JView).
- Make sure that Visual C++ is properly set up for command-line use. See your Visual C++ documentation for details.
- Write your Java code:
public class TestJNI { public native void greetings(); static { System.loadLibrary("greet"); } public static void main(String args[]) { new TestJNI().greetings(); }}
- Compile the Java file:
jvc TestJNI.java
- Run JavaH on the generated class file:
javah -jni TestJNI
- Write the C/C++ code based on the generated header file:
#include "TestJNI.h"#include <stdio.h>JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) { printf("Hello from Visual C++!");}
- Compile the C/C++ code:
cl greet.cpp -Ic:\sdk-java.31\include -Fegreet.dll -MD -LD
- Test the application:
jview TestJNI