Java 调用 JNI 的例子
声明java 类
package com.example.jni;
public class JNIRun {
static{
System.loadLibrary("./JNIRun");//加载生成的HelloJNI2.dll
}
public JNIRun() {
}
public native void exchangeParam(String name);
}
编译java 类

根据class 文件 声明 .h 文件
调用javah文件时,需要在cmd命令行模式里面进入.class文件所在文件夹。随后调用:javah -classpath . -jni 包名.类名。

结果如下



将生成的 .h 文件导入项目

修改配置

包含 jdk 路径中 jni.h 和 jni_md.h 文件

生成dll 文件 放到java 项目就OK了
下面是cpp 文件的实现
c 和java之间数据类型的转换 由JNIEnv *env 来完成
#include "com_example_jni_JNIRun.h" #include <string> #include <iostream> using namespace std; JNIEXPORT void JNICALL Java_com_example_jni_JNIRun_exchangeParam (JNIEnv *env, jobject obj, jstring name) { const char* pname = env->GetStringUTFChars(name, NULL); std::string str = " hello from java's string ,I am C++ string"; cout << str << endl; env->ReleaseStringUTFChars(name, pname); }

浙公网安备 33010602011771号