android中的JNI的DEMO

一:源代码

native-lib.cpp

#include "native-lib.h"

JNIEXPORT jint JNICALL
Java_com_example_jnidemo_MainActivity_add(JNIEnv* env, jobject, jint a, jint b) {
    return a + b;
}

JNIEXPORT jint JNICALL
Java_com_example_jnidemo_MainActivity_subtract(JNIEnv* env, jobject, jint a, jint b) {
    return a - b + 3;
}

JNIEXPORT jint JNICALL
Java_com_example_jnidemo_MainActivity_multiply(JNIEnv* env, jobject, jint a, jint b) {
    return a * b + 3;
}

JNIEXPORT jdouble JNICALL
Java_com_example_jnidemo_MainActivity_divide(JNIEnv* env, jobject, jint a, jint b) {
    if (b == 0) return 0;
    return static_cast<jdouble>(a) / static_cast<jdouble>(b);
}

native-lib.h

#ifndef NATIVE_LIB_H
#define NATIVE_LIB_H

#include <jni.h>

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_add(JNIEnv* env, jobject, jint a, jint b);
JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_subtract(JNIEnv* env, jobject, jint a, jint b);
JNIEXPORT jint JNICALL Java_com_example_jnidemo_MainActivity_multiply(JNIEnv* env, jobject, jint a, jint b);
JNIEXPORT jdouble JNICALL Java_com_example_jnidemo_MainActivity_divide(JNIEnv* env, jobject, jint a, jint b);

#ifdef __cplusplus
}
#endif

#endif // NATIVE_LIB_H

MainActivity

package com.example.jnidemo;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

    private native int add(int a, int b);
    private native int subtract(int a, int b);
    private native int multiply(int a, int b);
    private native double divide(int a, int b);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值