当前位置:编程学习 > JAVA >>

java jni调用c/c++ dll

 

创建一文件夹Test,里面建一java类Test.java,代码如下:

public class Test{

    static{

        System.loadLibrary("Test");

    }

    public native int test();

    public static void main(String[] args){

        Test test = new Test();

        System.out.println(test.test());

    }

}

进入cmd下,进入该目录,java Test.java 编译之后 ,javah -jni Test,生成Test.h

这是一个C的头文件,该头文件内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class Test */

 

#ifndef _Included_Test

#define _Included_Test

#ifdef __cplusplus

extern "C" {

#endif

/*

 * Class:     Test

 * Method:    test

 * Signature: ()I

 */

JNIEXPORT jint JNICALL Java_Test_test

  (JNIEnv *, jobject);

 

#ifdef __cplusplus

}

#endif

#endif

这前面的include <jni.h>可以改为include "jni.h",jni.h这个文件在jdk目录的include文件夹内,可以拷贝到当前Test目录。

然后就是创建C代码文件,Test.c代码如下:

#include "test.h"

 

JNIEXPORT jint JNICALL Java_Test_test

  (JNIEnv *env, jobject obj)

{

    return 1;

}

然后用法cl命令(cl是C编译器编译命令)编译Test.c,命令如下:

cl   -Id:\jdk\include   -Id:\jdk\include\win32   -LD   Test.c   (myDll.lib)   -FeTest.dll

(myDll.lib)是你的C代码文件中用到的代码库,此例中没用到,不需导入,-Id指明的path指的是jni所需的头文件.h文件的位置。-LD表明要生成动态链接库 即dll

最后就来测试下 在Test目录下java Test运行Test.class

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,