//testdll.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class testdll */ #ifndef _Included_testdll #define _Included_testdll #ifdef __cplusplus extern "C" { #endif /* * Class: testdll * Method: get * Signature: ()I */ JNIEXPORT jint JNICALL Java_testdll_get(JNIEnv *, jclass); /* * Class: testdll * Method: set * Signature: (I)V */ JNIEXPORT void JNICALL Java_testdll_set(JNIEnv *, jclass, jint); #ifdef __cplusplus } #endif #endif
//testdll.java
public class testdll { static { System.loadLibrary("testdll"); } public native static int get(); public native static void set(int i); public static void main(String[] args) { testdll test = new testdll(); test.set(10); System.out.println(test.get()); } } gcc -Wl,--add-stdcall-alias -I "C:Program FilesJavajdk1.6.0_39include" -I "C:Program FilesJavajdk1.6.0_39includewin32" -shared -o testdll.dll testdll.cpp
//testdll.cpp
#include "testdll.h" int i = 0; JNIEXPORT jint JNICALL Java_testdll_get(JNIEnv *, jclass) { return i; } JNIEXPORT void JNICALL Java_testdll_set(JNIEnv *, jclass, jint j) { i = j; }