因为项目中要在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:\Code\eclipse\JNIDemo\bin>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!\n");
}


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


其实就是要把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

eclipse调用JNI之环境的搭建相关推荐

  1. [Angular2]eclipse中angular2开发环境的搭建

    本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan 环境准备 1.eclipse neon 2.网络连接 插件地址 eclipse的插件市场地址: htt ...

  2. Eclipse+pyDev进行Python环境的搭建

    1.下载eclipse和Python最新版本并安装: 2.在eclipse中点击help----install new software ,在弹出的对话框中Work With后面输入链接http:// ...

  3. eclipse集成weblogic开发环境的搭建

    1.下载Eclipse的weblogic插件,如果本来就有Eclipse则选择下载插件oepe-12.1.2.3-kepler-repository.zip或者在线安装,否则直接下载已经集成weblo ...

  4. eclipse+gcc STM32开发环境搭建及调试

    记录一下本人进行eclipse+gcc stm32开发环境的搭建过程,以便后续学习使用 参考资料如下: CubeMX+Eclipse+Jlink STM32开发环境搭建_小裘HUST的博客-CSDN博 ...

  5. 手把手教你通过Eclipse工程配置调用JNI完全攻略

    本文地址:http://www.cnblogs.com/wavky/p/JNI.html 当你找到并鬼使神差地打开这个博文的时候,我敢肯定你已经知道什么是JNI,基本概念就不粘贴了. 百度出来的JNI ...

  6. 搭建Eclipse C/C++开发环境

    搭建eclipse C/C++开发环境:     1.下载并安装Eclipse for C++:http://www.eclipse.org.最新版是基于Eclipse 3.5 galileo,文件名 ...

  7. Java开发环境的搭建以及使用eclipse从头一步步创建java项目

    原文:出自本人的Linux博客http://blog.csdn.net/unix21/article/details/18813173 一.Java 开发环境的搭建 这里主要说windows环境下怎么 ...

  8. Java开发环境的搭建以及使用eclipse创建项目

    一.Java 开发环境的搭建 这里主要说windows环境下怎么配置Java环境.如果是Linux环境参考本博客另一篇文章即可: Linux环境安装卸载JDK 1.首先安装JDK java的SDK简称 ...

  9. linux 下 eclipse 开发环境的搭建

    在windows平台下开发习惯了各种ide,不得不承认ide给我们开发带来的便捷.于是希望在linux平台下也希望找到一个合适的ide.这就想起来了eclipse具有跨平台性. 那么就开始搭建环境吧. ...

最新文章

  1. zencart安全辅助小脚本
  2. Yii2 主从 数据库
  3. long类型20位示例_Java Long类lowerOneBit()方法与示例
  4. mysql主从复制实践之单数据库多实例
  5. Android移动应用基础教程【数据存储】
  6. 如何反编译dll文件
  7. 贪心科技机器学习训练营(九)
  8. PAT --- 1055.集体照 (25 分)
  9. Redis - 听说 Dragonfly 宣称比我快 25 倍
  10. specular图使用方法_CSharpGL(54)用基于图像的光照(IBL)来计算PBR的Specular部分
  11. TCP通讯中发送文件
  12. PHP接口_短信发送接口
  13. Navicat 图形化界面工具
  14. 【合天网安】FCKeditor 2.4.3文件上传漏洞
  15. 读论文,第十二天:FMG Versus EMG: A Comparison of Usability for Real-Time Pattern Recognition Based Control
  16. 您需要Administrators提供的权限才能对此文件进行更改
  17. 昂达v80 plus linux,昂达(ONDA)V80 Plus平板电脑整体性能评测-ZOL中关村在线
  18. 啊啊,终于搞明白了,原来注解是这么一回事。6000+字理解注解【一】
  19. 965年10元纸币收藏价值
  20. 【网络协议趣谈】CDN静态和动态数据缓存

热门文章

  1. 从风投看中国IT行业的发展
  2. 2022-2028年中国铅锌精矿粉行业市场研究及前瞻分析报告
  3. 2022-2028年中国塑料安瓿瓶行业市场研究及前瞻分析报告
  4. c语言从stdin读入
  5. 不要为了面子伤了自己
  6. openpyxl.utils.exceptions.IllegalCharacterError错误
  7. Gitea——私有git服务器搭建详细教程
  8. 数字营销,带动汽车销量增长
  9. 关键任务应用程序依赖于故障保护存储器
  10. MAML-Tracker: 目标跟踪分析:CVPR 2020(Oral)