JNI技术初探

本示例简单输出 hello world

1.编写java类   


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 文件


进入到项目的bin目录下,

执行命令行: javah com.yeegee.jni.TestJni

会在bin目录下生成:com_yeegee_jni_TestJni.h

3.新建C++工程

在vs中添加C++工程

将 com_yeegee_jni_TestJni.h 复制到项目中

在 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




你可能感兴趣的:(java,C++,接口,jni,例子)