JNI技術初探

本示例簡單輸出 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

相關文章
相關標籤/搜索