eclipse JNI示例。利用C/C++实现JAVA中调用的函数

来源:互联网 发布:软件开发部门经理职责 编辑:程序博客网 时间:2024/06/10 20:03

第一步。新建一个JAVA工程JniTest。再在包jni下新建一个HelloWorld类

 

package jni;public class HelloWorld {    static{        System.loadLibrary("HelloWorld");    }     public native void dispHelloWorld();    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        //System.getProperty("java.library.path");       new HelloWorld().dispHelloWorld();    }}


第二步。利用javah命令产生相应的头文件

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class jni_HelloWorld */#ifndef _Included_jni_HelloWorld#define _Included_jni_HelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class:     jni_HelloWorld * Method:    sayHi * Signature: ()V */JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi  (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif


 

第三步。在对应的目录下新建jni_HelloWorldImp.cpp文件实现头文件jni_HelloWorld.h的函数。

#include <jni.h>#include "jni_HelloWorld.h"#include <stdio.h>JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi  (JNIEnv *env, jobject obj){   printf("Hi,World!");   return;}

第四步。利用cl命令(本无cl命令。cl是vs编译器。可以配置环境变量。使得命令能运行。)

在控制台下>cl -LD jni_HelloWorldImp.cpp -FeHelloWorld.dll,
以上命令的参数中,-LD表示产生dll-Fe后面表示产生dll的名字,具体的参数可以自己用cl -help命令查看,
如果成功编译,会产生HelloWorld.dll, HelloWorld.lib, HelloWorld.exp

以及jni_HelloWorldImp.obj四个文件。

这儿有一个小技巧。选择VS下面的控制台工具,比较不容易出错。因为可能有些系统库路径不支持。在VS下面的控制台可以避免这一尴尬。当然你也可以用.bat文件指明路径,但如果路径较多,就比较麻烦。

OK,成功生成了。

最后一步。设置下本地JNI的路径

然后,运行测试。。

原创粉丝点击