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

相关文章
相关标签/搜索