现在的位置: 首页 > 综合 > 正文

最简单的JNI

2013年09月21日 ⁄ 综合 ⁄ 共 1755字 ⁄ 字号 评论关闭
 

最简单的JNI
       JNI就是“Java本地化”,适用于和C/C++混合编程,复杂的理论不必多说,下面一个例子说明了怎样JNI。以下工作都在一个开发目录下,假设环境变量都已经设好。
       1. 编写类似这样的java文件,保存为 HelloWorld.java 的文件,并javac HelloWorld 产生class文件
              class HelloWorld
              {
                     public native void displayHelloWorld();
 
                     static {
                            System.loadLibrary("hello");
                            }
 
                     public static void main(String[] args)
                     {
                            new HelloWorld().displayHelloWorld();
                     }
              }
 
       2.用命令:javah HelloWorld 产生一个HelloWorld.h的头文件
              /* DO NOT EDIT THIS FILE - it is machine generated */
              #include <jni.h>
              /* Header for class HelloWorld */
 
              #ifndef _Included_HelloWorld
              #define _Included_HelloWorld
              #ifdef __cplusplus
              extern "C" {
              #endif
              /*
               * Class:     HelloWorld
               * Method:    displayHelloWorld
               * Signature: ()V
               */
              JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
               (JNIEnv *, jobject);
 
              #ifdef __cplusplus
              }
              #endif
              #endif
       3.实现 HelloWorld.c 源文件
              #include <jni.h>
              #include <stdio.h>
              #include "HelloWorld.h"
 
 
              JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
              {
 
                     printf("HelloWorld,/n");
                     return ;
              }
       4.编译产生 Hello.dll ,用微软的cl,假设你已经装好了vc,这里用的是vc6,将vc/bin/VCVARS32.BAT拷到你的同一个目录下,cl之前要运行它
              cl -I%java_home%/include -I%java_home%/include/win32 -LD HelloWorld.c -Fehello.dll
              (注:假设java_home环境变量已经设好;-LD后面有一个空格)
       5 Java HelloWorld 即可看到结果
 
 
 
 

 

抱歉!评论已关闭.