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);
}

 

posted @ 2018-04-26 14:50  huluBrother  阅读(344)  评论(0)    收藏  举报