第一步
在java中定义本地方法(这里使用的IDEA)
public class TestJni {
public static void main(String[] args){
TestJni jni = new TestJni();
System.out.println("银行卡密码:"+jni.getPwd());
}
//本地方法
public native String getPwd();
}
第二步
在..\out\production\classes目录下,在Terminal中如下命令,生成TestJni.h头文件
javah TestJni
第三步
用vs新建c项目,将TestJni.h,jdk目录下的jni.h和jni_md.h文件拷贝至项目里。然后添加头文件TestJni.h,如图,注意红框处修改
第四步
实现jni方法
#include "TestJni.h"
JNIEXPORT jstring JNICALL Java_TestJni_getPwd
(JNIEnv *env, jobject jobj){
return (*env)->NewStringUTF(env, "123456");
}
第五步
右键项目属性,修改配置类型为动态库
由于在java工程中使用,点击生成->配置管理器,将项目平台改为x64
点击生成解决方案,下图说明生成成功
第六步
引入动态库
使用
public class TestJni {
static {
System.load("D:\\IntelliJIDEAProjects\\lamdatest\\src\\main\\jni\\Project1.dll");
}
public static void main(String[] args){
TestJni jni = new TestJni();
System.out.println(jni.getPwd());
}
public native String getPwd();
}
运行成功,我的几亿美刀的银行卡密码暴露了