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

最近在学习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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值