`
weiwu83
  • 浏览: 188526 次
  • 来自: ...
社区版块
存档分类
最新评论

JNI(JAVA 调用 dll)

    博客分类:
  • JAVA
阅读更多
//编写JAVA文件,其中测试类为DllTest,代码如下:  
public class DllTest   
{  
public static void main(String[] args)  
{  
  test a=new test();  
  a.HelloWorld();  
  System.out.println(a.cToJava());  
}  
}  
//编写JNI代码,其中类名为test,如下:  
public class test {  
  static   
  {  
    System.loadLibrary("MyNative");  
  }  
    
  //以下函数只做申明,在C中实现  
  public native static void HelloWorld();  
  public native static String cToJava();  
 
}  
//使用javac得到class文件,然后使用javah命令得到.h文件  
//编写C++代码,MyNative如下:  
使用win32 Dynamic-link Library新建一个新空工程,新建一个c++文件,命名为MyNative.cpp,代码如下:  
#include <stdio.h>  
#include "test.h" 
JNIEXPORT void JNICALL Java_test_HelloWorld  
  (JNIEnv *env, jclass jobject)  
{  
    printf("hello world!\n");  
}  
JNIEXPORT jstring JNICALL Java_test_cToJava  
  (JNIEnv *env, jclass obj)  
{  
    jstring jstr;  
    char str[]="Hello World!\n";  
    jstr=env->NewStringUTF(str);  
    return jstr;  
}  
函数申明要和test.h中的函数申明保持一致,否则就出错,使用rebuild all命令,得到MyNative.dll文件,拷贝到test.java同一目录下。  
运行DllTest类,就得到结果,这里我们就实现用c++来实现具体函数功能的方法,当然这是最简单的JNI应用了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics