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

  • 4
  • 0
  • 约4.11千字
  • 约 18页
  • 2016-08-23 发布于重庆
  • 举报

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

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

当你找到并鬼使神差地打开这个博文的时候,我敢肯定你已经知道什么是JNI,基本概念就不粘贴了。 百度出来的JNI调用方法,前三页几乎毫不例外的都是几年前的资料,告诉你如何设置一大堆莫名其妙的参数、如何通过命令行加工出dll并调用出来的,遗憾的是笔主打开的那堆帖子,多少都有些操作上的出入,再一个笔主对嘿嘿的命令行窗口无爱,并且,例外的帖子笔主还木有幸看到... 所以笔主狠心放下公司工作,抛弃领导的绩效奖金,花了大半天时间研究JNI的调用方法(尤其不用写命令那种),终于赶在下班的前三分钟,顺利完全通过eclipse界面调用出自定义的dll方法!那个激动就像中美建交或日本沉没或苍老师来我家做客那一瞬间那么振奋人心!! ? 简单准备工作: 以下具体操作方法可以直接百度,答案几乎是唯一可信的。 安装JDK,配置系统环境变量 准备好一个带CDT插件的Eclipse,笔主使用的是google的ADT Bundle,自带了CDT,对应Eclipse 3.8.0版 下载一个MinGW(免费的C/C++等语言编译器套件),笔主限于公司垃圾网络,测试时使用mingw-offline-installv4.6.2版,安装时仅需勾选(在线安装版下载数据量约50Mb): C Compiler C++ Compiler MinGW Developer Toolkit (Indudes MSYS Basic System) ? 配置MinGW的环境变量: 打开环境变量(系统变量),添加 MINGW_HOME 变量,变量值是刚才MinGW的安装地址,如 D:\Program Files\MinGW 设置path变量,编辑path变量添加 %MINGW_HOME%\bin;%MINGW_HOME%\msys\1.0\bin; 添加 LIBRARY_PATH 变量,变量值 %MINGW_HOME%\lib 添加 C_INCLUDE_PATH 变量,变量值 %JAVA_HOME%\include;%JAVA_HOME%\include\win32;%MINGW_HOME%\include 添加 CPLUS_INCLUDE_PATH 变量,内容 %JAVA_HOME%\include;%JAVA_HOME%\include\win32;%MINGW_HOME%\lib\gcc\mingw32\4.5.2\include\c++ Win7点击确定后立即生效,若未生效请重启系统(参考安装JDK时配置操作) 第4、5步额外添加的%JAVA_HOME%\include;%JAVA_HOME%\include\win32;是为了让eclipse在c/c++项目中自动引入这个目录下的各种头文件,例如 jni.h,也可在具体项目的属性中以下位置进行指定: ? ? 调用JNI全过程: 创建一个普通java工程 Test,添加一个专门负责引入调用本地库的类 Native,代码如下: 1 public class Native { 2 // 声明自定义本地库方法接口 3 native public static void run(); 4 5 // 自动加载本地库文件,如文件名全称为 myCLib.dll 6 static{ 7 System.loadLibrary(myCLib); 8 } 9 } ? 打开CMD....好吧,笔主承认标题党了,整个博文仅此一处需要一句简单的命令! CMD导航至项目文件夹下的 src 目录,输入 javah test.Native(需要使用包名.类名的完整限定名称),生成本地方法接口头文件 test_Native.h: ? 刷新eclipse的 Package Explorer 应该会变成这样的目录状态,其中刚才刚才生成的 test_Native.h 文件代码如下图示(笔主抢闸创建了Test类,稍候用于调用Native类的本地方法): ? ? 创建一个新的 C 工程 MyC,期待编译成dll的时候,选择 Shared Library 下的模板: ? ?在 MyC 工程内创建一个文件夹 src ,并将刚才 Test 项目中生成的 test_Native.h 头文件拷贝(或剪切)到?MyC?工程的 src 文件夹下,Test 工程下的?test_Native.h 文件在后面的项目运行过程中将不再起任何作用,可删: ? *? 打开 MyC 工程下的?test_Native.h ,若 #include jni.h 提示 Unresolved inclusion: jni.h 的错误警告(如下图所示),则表明目前这个C项目没有指定

文档评论(0)

1亿VIP精品文档

相关文档