Java之JNI简单使用
java吧
全部回复
仅看楼主
level 13
xiao78050576 楼主
一楼祭度娘
阿门,不要被删啊
[惆怅~]
2012年09月13日 16点09分 1
level 13
xiao78050576 楼主
首先还是简单说明下- -
前几天有提出JNI的使用,脑子一时充血,然后就捣鼓了下,弄了之后发的东西
下面说的是JNI的使用基本流程(应该是说我理解的基本使用流程)吧,有兴趣可以看看
早几天弄了初稿(姑且吧……),然后犹豫了蛮久发不发= =反正纠结就是了
PS1:本人学java新手不咋地,各种不足,望大家指正,灰常感谢
PS2:未发完前,忘勿要插楼,谢谢了

2012年09月13日 17点09分 2
[Yeah]
2012年09月24日 06点09分
level 13
xiao78050576 楼主
之后借地方顺便晒一下以前的帖子- -
愿意看的可以看看……
简单的Java环境配置(下载以及环境变量):https://tieba.baidu.com/p/1314117347
简单的Java环境配置(EditPlus简单配置):https://tieba.baidu.com/p/1320799796
简单的Java环境配置(Eclipse简单使用):https://tieba.baidu.com/p/1413647927
2012年09月13日 17点09分 3
level 13
xiao78050576 楼主
3.使用IDE完成本地代码的编写以及编译
(题外:
由于本人对命令行编译不熟悉,这里使用Visual Studio 2010作为实例,完成C代码的编写以及编译╮(╯▽╰)╭)
打开VS,创建一个新的项目
选择项目类型
java程序使用JNI是通过dll文件(在windows的话……,应该一般是dll吧)的,所以类型选择dll,最终生成的是dll文件而不是exe
点击完成,创建项目
2012年09月13日 17点09分 5
level 13
xiao78050576 楼主
一些注意事项
1.首先,在C中调用方法参数的JNIEnv指针,需要使用“(*env)->”来调用其中的方法,否则编译会出错(这里原来截了图,但重装系统,删除了,然后懒得再弄程序再写,凑合吧……)
2.平台问题,主要是指32位JDK和64位JDK所调用的DLL文件问题,64位JDK不能调用32位的DLL文件,反过来也一样。
我所安装的是64位JDK,所以在生成DLL文件时,需要指定为X64平台,下面是简单说下目标平台的设置
2012年09月13日 17点09分 10
level 13
xiao78050576 楼主
7.编译目标平台的设置
点击目标平台的下拉框,选择配置管理器(默认是32位平台的,在这说明的是配置64位平台)
选择新建项
VS会自动配置
选择确认,之后就能在X64和X86之间切换了
PS:由于代码简单- -对于X64的配置使用默认,如果有其他需求应该还需要做其他配置(这个我也没深入研究)
2012年09月13日 17点09分 11
level 13
xiao78050576 楼主
8.编译代码
编译比较简单,点击菜单中的生成
如果不出意外的话,编译成功
PS:我也调试了许久才成功的……
生成的DLL文件的位置
X86的
X64的

2012年09月13日 17点09分 12
level 13
xiao78050576 楼主
补充,
不配置环境变量也行,将
dll和调用的类放在同一文件夹也是可以的……

2012年09月13日 18点09分 14
level 13
xiao78050576 楼主
完毕……
依然是图比较多,文字少……
自己给自己点鼓励,撒花[撒钱]
2012年09月13日 18点09分 15
+1[我爱牛奶]
2012年09月13日 18点09分
level 13
xiao78050576 楼主
然后做下总结……
凭自己的理解写了下使用JNI的一个流程吧,然后是写了些注意事项,对于C代码,应该属于比较不规范的,大家就看看就行,大虾们方便的话指下错误
2012年09月13日 18点09分 16
对于纯Java使用者来说突然就涉及C/C++的API会比较苦手嗯
2012年09月14日 00点09分
level 11
2012年09月13日 19点09分 19
已+
2012年09月14日 00点09分
回复 神宫寺铃香 :+1[我爱牛奶]
2012年09月14日 07点09分
吧务
level 15
技术帖要顶。。。
2012年09月13日 20点09分 20
level 16
这个要支持啊
[顶]
2012年09月13日 23点09分 22
level 8
马克
2012年09月14日 00点09分 24
level 13

2012年09月14日 00点09分 25
level 11
好东西!不过还是第二个比较好,就是java调用 dll 一般人把class转成dll吧!呵呵
[集体舞]
2012年09月14日 00点09分 27
level 3
java高手云集地,请进QQ群:182728479。无聊人士免进……
2012年09月14日 07点09分 28
level 13
[大哭]看不懂
2012年09月14日 07点09分 29
1 2 尾页