JNI Java 入门篇——传递&&接收基本数据类型

来源:互联网 发布:语音识别 算法 编辑:程序博客网 时间:2024/06/13 09:52

最近在学习JNI Java基础,不了解基本开发流程的同学请参考JNI Java入门篇——HelloWorld.
下面直接上主要代码:
1.PrimaryJNI.java

package com.example.jni;public class PrimaryJNI {    static {        System.loadLibrary("primaryjni");    }    public native String echo(String content, boolean flag);    public native int calculateSqr(int x, int y);    public native double calculateSum(double x, double y);    public native float calculateSum(float x, float y);    public static void main(String[] args) {        PrimaryJNI item = new PrimaryJNI();        int sqr = item.calculateSqr(3, 4);        String content = item.echo("Hello World", true);        double doubleSum = item.calculateSum(2, 3);        float floatSum = item.calculateSum(2.0f, 3.0f);        System.out.println("sqr : " + sqr);        System.out.println("Java Content : " + content);        System.out.println("double sum result : " + doubleSum);        System.out.println("float sum result : " + floatSum);    }}

2.primaryjni.cpp

// primaryjni.cpp : Defines the exported functions for the DLL application.////be careful ,follow must be first line#include "stdafx.h"#include "com_example_jni_PrimaryJNI.h"#include <math.h>/** Class:     com_example_jni_PrimaryJNI* Method:    echo* Signature: (Ljava/lang/String;Z)Ljava/lang/String;*/JNIEXPORT jstring JNICALL Java_com_example_jni_PrimaryJNI_echo(JNIEnv * env, jobject obj, jstring param1, jboolean flag) {    const char* content = env->GetStringUTFChars(param1, 0);    printf("(C++)received Java Conent:%s", content);    env->ReleaseStringUTFChars(param1, content);    char* return_content = "c++ returned echo msg";    return env->NewStringUTF(return_content);}/** Class:     com_example_jni_PrimaryJNI* Method:    calculateSqr* Signature: (II)I*/JNIEXPORT jint JNICALL Java_com_example_jni_PrimaryJNI_calculateSqr(JNIEnv * env, jobject obj, jint param1, jint param2) {    int x = param1;    int y = param2;    return (int)sqrt(x*x + y*y);}/** Class:     com_example_jni_PrimaryJNI* Method:    calculateSum* Signature: (DD)D*/JNIEXPORT jdouble JNICALL Java_com_example_jni_PrimaryJNI_calculateSum__DD(JNIEnv * env, jobject obj, jdouble param1, jdouble param2) {    return param1 + param2;}/** Class:     com_example_jni_PrimaryJNI* Method:    calculateSum* Signature: (FF)F*/JNIEXPORT jfloat JNICALL Java_com_example_jni_PrimaryJNI_calculateSum__FF(JNIEnv * env, jobject obj, jfloat param1, jfloat param2) {    return param1 + param2;}

这里写图片描述
ok!

1 0
原创粉丝点击