本示例簡單輸出 hello worldjava
1.編寫java類 ios
package com.yeegee.jni; public class TestJni { public native void doHello(); public static void main(String[] args) { System.loadLibrary("Test"); TestJni jni=new TestJni(); jni.doHello(); } }
2.生成 .h 文件spa
進入到項目的bin目錄下,命令行
執行命令行: javah com.yeegee.jni.TestJniunix
會在bin目錄下生成:com_yeegee_jni_TestJni.hcode
3.新建C++工程io
在vs中添加C++工程class
將 com_yeegee_jni_TestJni.h 複製到項目中stream
在 jdk所在目錄下的include文件夾中,將jni.h 複製到項目中變量
在 jdk所在目錄下的include/win32文件夾中,將jni_md.h 複製到項目中
4.編寫C++代碼
在項目同名cpp文件中,輸出hello world
#include "stdafx.h" #include "iostream" #include "com_yeegee_jni_TestJni.h" using namespace std; JNIEXPORT void JNICALL Java_com_yeegee_jni_TestJni_doHello(JNIEnv *, jobject){ cout<<"hello world"<<endl; }
5.設置環境變量
設置path變量,添加 dll文件所在路徑值(示例:E:\CLanguage\Test\Debug);
6.運行程序
此時,再回到第一段,執行java的main方法,調用 doHello
輸出內容是:hello world
注意事項:
1. #inlculde <jni.h> 須要改爲 #include "jni.h"。
2.C++的io 須要使用 include "iostream" 以及 using namespace std。
3.若是方法有改動,cpp源文件和頭文件都須要進行修改。
4.調用dll時,只須要寫名稱便可,不須要文件擴展名。
5.在unix平臺,使用的庫文件,擴展名是.so