java调用c jni_java使用JNI调用C接口

1.java文件 JavaCallC.java

package callC;

public class JavaCallC {

static {

System.out.println(System.getProperty("java.library.path"));

System.loadLibrary("JavaCallC"); //此字符串为最后生成的javaCallC.dll的名称

}

public native int StrInIntOut(String str); //将要在C中实现的

public static void main(String[] args) {

JavaCallC javaCallC=new JavaCallC();

javaCallC.StrInIntOut("123");

//System.out.println("123");

}

}

然后编译成class文件:

D:\workplace\eclipse\functioncall\src>javac callC/JavaCallC.java

生成头文件:

D:\workplace\eclipse\functioncall\src>javah -classpath D:\workplace\eclipse\functioncall\src -d d:/ -jni callC.JavaCallC

其中java中各个命令的意思是

-classpath  用于装入类的路径

-d  输出目录

-jni 生成 JNI样式的头文件(默认)

注意到以上我们命令中指定的路径

注意到我们的命令符的执行位置是源代码目录”D:\workplace\eclipse\functioncall-new2\src”

-classpath  后面的路径是指包”callC”所在的根路径  -jni后面的路径是包名+类名

在此目录下会生成javaCallC.h的头文件,此为C的头文件,代码如下:

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

#include

/* Header for class callC_JavaCallC */

#ifndef _Included_callC_JavaCallC

#define _Included_callC_JavaCallC

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class: callC_JavaCallC

* Method: StrInIntOut

* Signature: (Ljava/lang/String;)I

*/

JNIEXPORT jint JNICALL Java_callC_JavaCallC_StrInIntOut

(JNIEnv *, jobject, jstring);

#ifdef __cplusplus

}

#endif

#endif

然后再VS中建立project步骤如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值