JNI的初步使用(一)

使用Eclipse和VS。实现JNI的基本调用。
eclipse代码

package com.skyl.jni.first;

/*
 * JNI(java native interface)
 * 
 * 1.编写native方法
 * 2.javah命令,生成.h头文件
 * 注:配置java环境变量,javah—类名在eclipse中生成.h文件
 * 3.复制.h头文件到cpp工程中
 * 4.实现.h头文件中声明的函数
 * 5、生成dll文件给java调用
 * 6、配置dll文件所在目录到环境变量
 * 7、重启Eclipse
 * 
 */
public class JniTest {
    public native static void getStringFromC();

    public static void main(String[] args){

    }
    //加载动态库
    static{
        System.loadLibrary("jni_study");
    }

}

VS代码

#include "com_com_skyl_jni_first_JniTest.h"

//函数实现
JNIEXPORT jstring JNICALL Java_com_skyl_jni_first_JniTest_getStringFromC
(JNIEnv *env, jclass jcls){
    //JNIEnv 结构体指针
    //typedef const struct JNINativeInterface_ *JNIEnv;
    //struct JNINativeInterface_ {
    //void *reserved0;
    //void *reserved1;
    //void *reserved2;}
    //代表Java运行环境,调用Java中的代码

    //JNIEnv 在C++中就是一个结构体的别名,在C中是一个结构体指针
    //env 在C++中一个结构体的一级指针,env在C中是一个二级指针

    //简单的实现
    //将C的字符串转为一个java字符串
    return (*env)->NewStringUTF(env,"C String");
}
注:在VS的头文件中要复制jni.h和jni_md.h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值