1、首先用java編寫一個簡單類
public class Hello{public native void sayHello();static {System.loadLibrary("HelloDll");}public static void main (String[] args) { new Hello().sayHello(); }}
使用javac Hello.java編譯該類
再用javah Hello產生Hello.h標頭檔
2、在Visual C++ 6.0中建立一個動態連結程式庫工程,工程名為HelloDll
3、在該工程中建立一個標頭檔名為:hello.h,將剛才產生的Hello.h檔案中的代碼複製進去,如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class Hello */#ifndef _Included_Hello#define _Included_Hello#ifdef __cplusplusextern "C" {#endif/* * Class: Hello * Method: sayHello * Signature: ()V */JNIEXPORT void JNICALL Java_Hello_sayHello (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
不需要做任何修改
此時建立一個Test.cpp檔案具體實現剛才的標頭檔中的函數,代碼如下
#include "Hello.h"#include <jni.h>JNIEXPORT void JNICALL Java_Hello_sayHello(JNIEnv *, jobject){printf("Hello world,I'm coming!");return;}
此時若編譯則會報錯,說找不到jni.h檔案,如下:
fatal error C1083: Cannot open include file: 'jni.h': No such file or directory
此時只需操作步驟4即可
4、在jdk的安裝目錄~\jdk1.6.0_25\include下將jni.h和~\jdk1.6.0_25\include\win32下的jni_md.h檔案複製到Visual C++ 6.0的D:\Microsoft Visual Studio\VC98\Include目錄下
5、此時在編譯連結Test.cpp檔案,即可產生動態連結程式庫檔案:
再將該檔案複製到與Hello.class檔案同一個目錄下,運行java檔案,即可調用有C/C++編寫實現的介面,即動態連結程式庫檔案
運行結果如下:
此即調用成功。