eclipse调用JNI之环境的搭建

因为项目中要在Java中调用C++编好的代码,即用eclipse调用动态链接库,故花了点时间研究在eclipse中使用JNI。


有时候因为Java本身特性的限制,单独使用Java语言可能不能完全满足应用程序的需要,这时需要使用JNI(JavaNative Interface)来编写Java本地方法,用来处理那些不能完全用Java语言编写应用程序的情况。通过JNI技术,Java开发者可以调用C/C++等其他语言编写的代码。JNI是Java语言和其他语言间的一座桥梁,通过访问JNI定义的接口来获得服务,在JNI的另一面可以通过C/C++或其它语言实现这些接口。


本文实现的目的是:在Java中定义一个方法,在C++中实现这个方法,在方法内部输出“Hello World",然后再回到Java中进行调用。


本文使用的环境是:win10  +  eclipse(eclipse-jee-neon-2-win32)+  VC++6.0(绿色英文版)。


第一步:在Eclipse中建立一个类:JNIDemo

package com.jni.demo;

public class JNIDemo {

	//定义一个本地方法
	public native void sayHello();
	
	public static void main(String[] args) {
		//调用动态链接库
		System.loadLibrary("JNIDemo");
		JNIDemo jniDemo = new JNIDemo();
		jniDemo.sayHello();

	}

}
其中sayHello就是要在C++中实现的方法。


第二步:使用javah命令将JNIDemo生成.h的头文件:

命令如下:

G:CodeeclipseJNIDemoin>javah com.jni.demo.JNIDemo


命令执行成功后会在bin目录中生成头文件:com_jni_demo_JNIDemo.h


第三步:使用VC++6.0生成.dll文件

1、在VC++6.0中新建一个项目JNIDemo,项目类型为Win32 Dynamic-Link Library,点击OK。



2、在弹出的窗口中选择A simple DLL project,点击Finish。



3、打开项目所在的文件目录,将步骤2中生成的com_jni_demo_JNIDemo.h文件复制到此目录。然后点击工程窗口左边的FileView,切换到文件浏览模式。在Header Files上点击右键,选择Add Files to Folder,选择TestHello.h文件,点击OK。



4、打开StdAfx.h文件,再最后面添加:

#include <jni.h>
#include "com_jni_demo_JNIDemo.h"

5、打开JNIDemo.cpp文件,在最后面添加一段代码:

JNIEXPORT void JNICALL Java_com_jni_demo_JNIDemo_sayHello (JNIEnv * env, jobject obj)  
{  
	printf("Hello World!
"); 
}

6、在VC的菜单上选择Tools-Options,打开选项对话框,在Directories文件夹,添加上jdk所在文件夹下的include和includewin32文件夹。


其实就是要把jni.h和jni_md.h文件添加的工程上来。

7、点击VC6.0上的菜单项Build-Build All,生成JNIDemo.dll。编译成功后,生成JNIDemo.dll文件在C++工程中的Debug目录中。


第四步:调用.dll文件。

有两种方式:

第一种方式:将VC++项目Debug文件夹中的JNIDemo.dll复制到JNIDemo.class所在的文件夹中。然后在命令行下输入java com.jni.demo.JNIDemo, 输出Hello World!



第二种方式:将JNIDemo.dll文件添加到path环境变量中


然后在eclipse中运行:


原文地址:https://www.cnblogs.com/yzy-blogs/p/6597327.html