JNI之开发流程

本文详细介绍如何使用Java Native Interface (JNI) 在Java与C/C++之间进行交互。从安装开发环境开始,逐步介绍创建本地方法、生成并实现头文件的过程,最终完成动态链接库的创建与加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、准备环境

安装androidstudio(或eclipse) 与 visual studio,配置好java的环境变量等准备工作。

2、创建java nativie方法

public class JniTest {
    public int key = 100;
    public native int getStringC();//方法名懒得改
}

3、javah命令生成.h头文件

4、将上一步生成的.h文件移动至vs解决方案中

jni.h 与 jni_md.h在jdk中有直接搜索后添加到项目(尽量直接把文件copy到项目目录下)如图

5、头文件声明的函数实现

#include "com_zhangteng_myapplication_JniTest.h"
JNIEXPORT jint JNICALL Java_com_zhangteng_myapplication_JniTest_getStringC(JNIEnv* env, jobject jobj){
	jclass cls = env->GetObjectClass(jobj);
	jfieldID fid = env->GetFieldID(cls, "key", "I");
	jint jstr = env->GetIntField(jobj, fid);
	printf("c++:%d", jstr);
	env->SetIntField(jobj, fid, jstr+1);
	return jstr;
}

c与c++JNIEnv用法有细微区别,c中是二级指针,c++中是一级指针,请自行转到声明查看

6、生成windows动态库

7、在项目中找到生成的.dll动态库并在java中加载

public class JniTest {
    public int key = 100;
    public native int getStringC();
    static {
        System.load("E:\\visual studio 2013\\Projects\\ConsoleApplication1\\x64\\Debug\\ConsoleApplication1.dll");
    }

8、测试代码

public class STest {
    @Test
    public void main() {
        JniTest jniTest = new JniTest();
        System.out.println("java-before:" + jniTest.key);
        System.out.println("java-ing" + jniTest.getStringC());
        System.out.println("java-end:" + jniTest.key);
    }
}

9、输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值