java使用JNI调用C++函数

网上有了很多这样的文章,不过感觉并不是很全,我都东找西找才最终把JAVA调用c++给搞定。

下面引用了很多网上已经有的的内容,我在这里只是整合一次,让以后的朋友少走弯路。

多说无益,具体如下:

作者:mykoma

 

假设所有文件都放在d:/

Step 1:

写JAVA文件

 

例如程序testdll.java,内容为:   
  public   class   testdll  {   
  static{   
  System.loadLibrary("testdll");   
  }   
  public   native   static   int   get();   
  public   native   static   void   set(int   i);   
  public   static   void   main(String[]   args)    {  

     testdll   test   =   new   testdll();   
     test.set(10);   
     System.out.println(test.get());   
   }      
  }  
用javac   testdll.java编译它,会生成testdll.class。

再用javah   testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。

 

Step 2:

根据testdll.h写C++文件testdll.cpp

 

testdll.cpp内容为:

#include   "testdll.h"   
  int   i   =   0;   
  JNIEXPORT   jint   JNICALL   Java_testdll_get   (JNIEnv   *,   jclass)     {   
      return   2*i;   
  }   
  JNIEXPORT   void   JNICALL   Java_testdll_set   (JNIEnv   *,   jclass,   jint   j)   {   
  i   =   j;   
  }  

 

Step 3:

生成testdll.dll

 

这一步需要注意,我最开始也是找了很多资料才弄正确

这里我使用的VS2008,网上有很多利用VC++6.0和VS2005的方法,我就只介绍如何使用VS2008来生成dll文件

 

“开始”>“Microsoft Visual Studio 2008”>“Visual Studio Tools”>“Visual Studio 2008 命令提示”

这样进入了命令行工具

这里我们需要使用到一个cl命令(D:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe)

进入testdll.h和testdllcpp的文件夹中(命令行),

然后输入

cl -I"C:/Program Files/Java/jdk1.6.0_06/include" -I"C:/Program Files/Java/jdk1.6.0_06/include/win32" -LD testdll.cpp -Fetestdll.dll

 

那么,就会生成testdll.dll

 

Step 4:

运行java文件

 

这里,开始生成的java类文件和testdll.dll都在d:/下面

 

然后使用java testdll

就会输出 20

 

结束

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值