近段时间做电脑的PC电源管理!开发语⾔是java但是偏偏java对底层的硬件控制不是很好!⽆奈软件的很多东西都是java写的(尤其是界⾯),所以想到了java的本地调⽤功能!利⽤C++或者C语⾔完成底层然后封装成DLL⽂件给java调⽤! 在做这之前在⽹上也搜索了⼀些例⼦!⽆奈很多给的很不完整有些重要步骤没有介绍所以在此给出完整的步骤! 第⼀步:新建⼀个java类:在此命名为TestNative.java
public class TestNative {
public native void SayHello(); public static void main(String[] args) { // TODO Auto-generated method stub }}
然后就是利⽤jdk bin⽬录⾥⾯的javah 所在⽬录如下: 启动运⾏
(运⾏启动就不⽤太详细了把!)
输⼊cmd命令进⼊命令指⽰符界⾯,然后就是进⼊java类所在⽬录,我放在E盘所以就进⼊了E盘,先编译⽣成class⽂件然后启动javah命令,⽣出TestNative.h头⽂件。截图如下:
怎么样⽣成了如下⽂件
接下来启动vc++或者Visual studio。
新建DLL⼯程
好把我把⼯程名设置TestNative1
然后⼯程⽬录就建好了。
把之前⽣成的TestNative⽂件放到⼯程⽬录下,然后将其添加到头⽂件⾥⾯。
在添加的时候出现了问题,原因是visio和vc的不兼容,具体解决⽅案见我的另外⼀个⽇志⾥⾯有详细介绍。
然后新建⼀个c++source⽂件添加到sourcefile⽂件中去!在新建的⽂件⾥⾯添加如下代码:
#include\"TestNative.h\"#include JNIEXPORT void JNICALL Java_TestNative_SayHello (JNIEnv * env, jobject obj){ cout<<\"hello World!\"< 然后将jdk⽬录include下的jni.h和⼦⽬录下的jni_md.h⽂件复制到项⽬⽬录下并且添加到头⽂件(HeadFile)⾥⾯。切记:⼀定要添加不然会报错,还有就是头⽂件的TestNative.h⽂件需要修改 <>需要修改成””否则回到系统⽬录下寻找。截图如下: 此时编译成功在debug⽬录下⽣成TestNative1.dll⽂件 接着我们设置相应的dll路径你可以选择设置环境变量,讲dll⽂件的⽬录添加到环境变量path⽬录⾥⾯或者 ⼲脆直接复制到jdk jre⽬录⾥⾯的bin和lib⽬录下⾯! 和 然后就是编写java程序添加如下代码: 然后就是重新编译运⾏⽣成结果! 怎么样很棒把! jni缺点⼀旦使⽤了jni java就不能跨平台了,环境改变就需要做出相应的改变才⾏! 因篇幅问题不能全部显示,请点此查看更多更全内容