使用JNI实现java调用c++

想要在java代码里面调用c++代码,我们可以使用JNI来实现。

1.创建Java工程,命名JniDemo,包名为jni,JniDemo代码如下:(记得要先保存一下哦,否则源代码还没有更新,就不能正常的编译)

 public class JniDemo{
    public native static void set(int i);
    public native static int get();

}


2.在cmd使用javah命令生成头文件。

   ps:javah命令主要用于在JNI开发的时,把java代码声明的JNI方法转化成C\C++头文件,以便进行JNI的C\C++端程序的开发。

   1)首先切换到当前工程目录的src下的包文件jni下。
   2 )在cmd中执行:javac jni.JniDemo.java (生成JniDemo的.class文件)
   3)路径回退到src中
   4)继续执行:javah -jni jni.JniDemo (在src目录下生成jni_JniDemo.h) ps:如果出现找不到类文件,可以使用javah -classpath . -jni jni.JniDemo

3.编译c++类库

   1)创建一个c++的DLL工程文件。

   2)在项目属性中添加 jni.h 和 jni_md.h 的包含路径:jni.h在jdk的include目录下,jni_md.h在jdk的include\win32目录下,即添加include和win32的路径.

  4)添加jni.h 和 jni_md.h 到工程的头文件中。

  3)把生成的jni_JniDemo.h添加到当前工程的根目录底下。

  4)在源文件中添加jni_JniDemo.h,然后实现jni_JniDemo.h的方法。

  5)编译生成dll。

  6)把生成的dll拷贝到JniDemo项目根目录下,修改JniDemo.java .(也可以拷贝到jdk的bin目录底下,如:C:\Program Files\Java\jdk1.6.0_25\bin)

     public class JniDemo {
      static{
          System.loadLibrary("JniDemo");
      }    
      public native static void set(int i);
      public native static int get();
      
     public static void main(String[] args) {
         set(100);
         System.out.println(get());
         
     }
 }

 7)完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值