脱掉JNI的外衣
我们都知道java是一种跨平台语言,而且是一种完全oo的语言,在本身的语言特性上也是使用非常的方便易用,所以是大多项目优先选用的一种开发平台,尤其在处理业务性比较强的系统上更是开发的迅捷便利,那么它也有一些缺憾,在处理本地方法的时候很乏力,因为我们不能够直接对内存直接操作,内存管理都是通过JVM来处理的.因此对于底层开发来说并不是一个好的选择,因此我们在涉及到底层开发的时候会用c/c++来处理,那么如果在一个业务系统中,有部分子系统需要调用底层的应用,或者第三方提供的底层控件那么我们如何处理呢(比如说社会保险中医疗子系统中需要读取用户的卡信息)?JNI是我们的一个好选择.
一个简单jni调用
首先如果要在java中定义一个本地方法需要对于这个方法加上关键字native,那么我们举个例子,定义一个方法名字叫dosoming,在java中如下表示
publicnativevoid dosoming();
当然定义这个本地方法后是要实现它的,那么我们在c++中需要创建.h和.cpp两个文件,在jdk中提供了我们一个工具,可以协助我们生成.h文件.在jdk bin目录下的javah.exe.注意在使用它的时候我们需要切换到classpath下然后输入命令,需要把class文件的完整的包路径输入进去,格式如下
Javah test.jni.JNITest
这样在我们的目录下就会生成一个根据包路径命名的一个.h文件,在我例子中是test_jni_JNITest.h,里面会把在java中所有定义为native的方法包含在.h文件中,函数原型如下
JNIEXPORT void JNICALL Java_test_jni_JNITest_dosoming
(JNIEnv *, jobject);
我们用vc++6.0新建一个动态库win32的控制台工程,把test_jni_JNITest.h加入进来,再根据函数原型,我们再新建一个cpp文件,里面简单写个简单的控制台输出,并且把头文件包含进来.
JNIEXPORT void JNICALL Java_test_jni_JNITest_dosoming(JNIEnv * env, jobject obj)
{
cout<<”http://blog.111cn.net/zxm0412”<<endl;
}
编译工程,会提示找不到jni.h和jni_md.h这是因为没有吧.h文件include到工程里面来,在tool->options->directories下可以设置.编译通过后我们生成一个dll文件,需要把这个dll文件放到系统path路径下,这样我们的java程序就能够找到它了
Java调用端的代码如下
publicstaticvoid main(String[] args)
{
JNITest test =
脱掉JNI的外衣(-)
时间: 2024-10-23 23:46:12
脱掉JNI的外衣(-)的相关文章
脱掉“隐形保本”外衣券商集合理财摒弃“同质化”质疑
以自有资金参与旗下管理的集合理财产品,并首先承担出现的亏损,是券商开展集合理财业务初期的最鲜明特色. 不过,目前,这种以自有资金参与旗下集合理财产品的做法正在悄然被各券商所放弃. 统计数据显示,2009年一季度新成立的券商集合理财计划达10款,另有6款处于推广期,产品数量上已经追平了2008年全年的发行数量,但其中仅有3款产品的管理人选择了以自有资金认购,并且只有一款1月份成立的产品表示将由自有资金优先承担风险. 相反,2008年成立的16款券商集合理财产品中,有过半数产品的管理人选择了以自有资
脱掉大数据外衣 走出大数据困境
<企业观察报>记者 简文超 如果要评选最近两年出现在媒体上的十大热词,大数据毫无意外会入选其中. 然而,似乎所有人都意识到大数据的能力,但却找不到运用大数据的方法.不管是企业.政府或者其他社团组织,大数据离他们那么近,却那么远. "大数据成了人们竞相议论的热词,但鲜有人提及这场巨大变革中人们需要具备的能力,无数的企业及个人忘'数'兴叹." 作为阿里巴巴集团商业智能部副总裁.国内大数据实践的先行者和数据观察家,拥有十几年丰富的数据实战经验的车品觉,或许是国内对于如何利用大数据
脱掉华丽的外套看win7的本质
自从微软发布了xp系统将于14年不在更新补丁的消息,win7系统的使用人数上升的快了很多.大部分xp系统的爱好者都转过去用win7系统了,而这篇文章我们要看的是win7系统的本质,而不是去看华丽的外套. 1 win7系统里面的各种实用性功能,都可以说是其外套,这些就像是我们软件安装某些插件就能有的功能. 一个系统的本质可以说是它的内核. 2 而win7系统的内核绝对不是新的内核. 有的人说win7系统的内核是windows 2000的,也有的人说是windows 2003的.各有各的理由,微软也
移动电商,脱掉的是所有人的裤子
移动电商,脱掉的是所有人的裤子,露出的是所有人的短,所有人都有被非礼的危险,如果要遮羞,所有人都要遮羞.无一例外! 不同之处在于,有些人手掌大,能一手遮天,我们于是一点也意识不到,他也有短处.或者,我们认为,他的短处不是最重要的,简直可以忽视,亦或总有可以弥补的方式. 现在世界已经进入到移动互联网时代,但是移动互联网还不等于移动电商.前者是说你有了入口.后者是说,你要用这个入口把东西卖掉.移动互联网离移动电商还有很远.要把移动互联网发展成移动电商,所有人都要主动脱掉裤子,既能看到别人的长处,既能
田馥甄上海音乐会唱破衣全场狂呼“脱掉脱掉”
田馥甄<LOVE!田馥甄To Hebe音乐会>于3月19日晚上在上海国际体操中心隆重开唱,现场爆点连连,全场座无虚席,歌迷流泪狂呼不要结束.开场田馥甄即把气氛引爆,全场狂呼"脱掉脱掉",现场连线Selina为其加油打气以及携手混血美男倪安东唱翻上海不夜城.[page] 田馥甄以<LOVE>这首歌曲作为开场,在狂热的现场气氛下,因为跳的太投入动作太大不小心让自己的衣服撕开,纽扣掉了,第一首歌唱毕,有歌迷带动狂呼"脱掉脱掉",开场气氛史无前例的H
优视CE0俞永福:脱掉西装下水 从副驾到司机
"我这个投资人脱掉了西装真正第一次下水游泳."俞永福说,以前做投资人的时候,永远是站在岸上看别人游,真正自己带领团队的时候才发现一大堆的难题摆在他面前. 俞永福简历: 1999年毕业于南开大学国际商学院,获得经济学学士学位: 2001年初,俞永福先生作为创业员工加入联想投资,负责电信.新媒体.互联网.移动互联网等领域的投资工作,历任投资经理.副总裁: 2007年http://www.aliyun.com/zixun/aggregation/30566.html">二次创
优视CE0俞永福:投资人脱掉西装下水创业
优视CE0俞永福 俞永福简历:1999年毕业于南开大学国际商学院,获得经济学学士学位:2001年初,俞永福先生作为创业员工加入联想投资,负责电信.新媒体.互联网.移动互联网等领域的投资工作,历任投资经理.副总裁:2007年二次创业加入优视科技任CEO,在他的主导下优视科技获得了天使投资人雷军以及联创策源.阿里巴巴.诺基亚的投资. 四年前,一个小创业公司优视科技(UC)资金耗尽,濒临险境:两位年轻的创始人诚邀俞永福加盟.他不负众望,三年便把这家小公司从15人发展到600多人,估值已达数亿美元,全球
宅男新手教程:怎样让游戏MM脱掉衣服
前言:作为一名合格却初出茅庐的游戏宅男,肯定有很多人会思考这样一个问题:"怎样才能让喜欢的游戏MM脱掉衣服呢?"呃,大家别想歪了,小编的意思是"怎样让游戏里的女主角换一套衣服"(坏笑).其实,这个问题也大可不必伤脑筋,游戏里有的是办法. [出续作人设更新] 代表人物:<最终幻想13-2>雷霆 2011年1月18日,SE在水晶发布会上正式对外宣布制作<最终幻想13-2>,而故事剧情基于<最终幻想13>XBOX360版附送的"
公益营销,请脱掉你的白富美外衣
说到公益营销,公益炒作,http://www.aliyun.com/zixun/aggregation/21263.html">第一时间想到的就是土豪陈光标,标哥算得上国内真正的公益营销作秀专家,手举硬通货人民币从大陆发到台湾,标哥一出,让人顿有一种,标哥走自己的路,让公益营销无路可走,毕竟,什么比发白花花的银子更有眼球效应呢? 所谓的公益营销,很多时候,是一场业内人士的小狂欢,企业的自High.找一波受助对象,企业捐点钱,拍拍照,发发新闻,一切OK了:有些企业单纯追求眼球效应,通过悲情营