zoukankan      html  css  js  c++  java
  • java的JNI调用完整步骤(有详细的截图) java 本地调用

       近段时间做电脑的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  所在目录如下:
    image 
    启动运行
    image (运行启动就不用太详细了把!)
    输入cmd命令进入命令指示符界面,然后就是进入java类所在目录,我放在E盘所以就进入了E盘,
    先编译生成class文件然后启动javah命令,生出TestNative.h头文件。截图如下:
    image 
    怎么样生成了如下文件image 
     
    接下来启动vc++或者Visual studio。
     
    新建DLL工程
    image 
    好把我把工程名设置TestNative1
    image 
    然后工程目录就建好了。
    把之前生成的TestNative文件放到工程目录下,然后将其添加到头文件里面。
    在添加的时候出现了问题,原因是visio和vc的不兼容,具体解决方案见我的另外一个日志里面有详细介绍。
    image 
    然后新建一个c++source文件添加到sourcefile文件中去!
    在新建的文件里面添加如下代码:
     

    #include"TestNative.h"
    #include<iostream>
    using  namespace  std;
    JNIEXPORT void JNICALL Java_TestNative_SayHello (JNIEnv *  env, jobject obj)
    {
        cout<<"hello World!"<<endl;
    }

    截图如下:

    image

    然后将jdk目录include下的jni.h和子目录下的jni_md.h文件复制到项目目录下并且添加到头文件(HeadFile)里面。切记:一定要添加不然会报错,还有就是头文件的TestNative.h文件需要修改  <>需要修改成””否则回到系统目录下寻找。

    截图如下:

    image

    此时编译成功在debug目录下生成TestNative1.dll文件

    image 
    接着我们设置相应的dll路径你可以选择设置环境变量,讲dll文件的目录添加到环境变量path目录里面或者
      干脆直接复制到jdk  jre目录里面的bin和lib目录下面!
    imageimage 
    然后就是编写java程序添加如下代码:
    image 
    然后就是重新编译运行生成结果!
    image 
    怎么样很棒把!
     jni缺点一旦使用了jni java就不能跨平台了,环境改变就需要做出相应的改变才行!
     
  • 相关阅读:
    执行存储过程 /创建存储过程:
    C# 设置本页面内所有TextBox为只读
    js 取得CheckBoxList的选中项的值
    把某些区域定为contentEditable="true"!
    如何在模态对话框中进行提交而不新开窗口?
    屏蔽 按键
    窗口与对话框之间的传值
    input button 的 onserverclick 事件
    checkbox js
    1.showModalDialog返回值给父窗口 2.winow.open开的窗口赋值给父窗口
  • 原文地址:https://www.cnblogs.com/zhang747725388/p/2386138.html
Copyright © 2011-2022 走看看