gpt4 book ai didi

android - JNI 函数中的两个整数求和返回错误值

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:08 25 4
gpt4 key购买 nike

我正在调用一个执行非常简单的求和运算的 native 函数,但它返回了一个错误的结果,为什么?!

这是我的java代码:

package com.example.sharedlibexample;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.text);
tv.setText("Value = " + String.valueOf(addInJNI(15, 8)));
}

public native int addInJNI(int a, int b);

static {
System.loadLibrary("hello-jni");
}
}

这是 native 代码:

int Java_com_example_sharedlibexample_MainActivity_addInJNI(int a, int b) {
return a + b;
}

这个求和例子的结果是:

-921636135

最佳答案

native 函数中的前两个参数应该是JNIEnv* env, jobject thiz(或者对于静态方法是JNIEnv* env, jclass clazz)。您的代码当前实际做的是,它添加了 envthiz 指针的值,而不是您打算传递的实际参数。

您可以使用 javah 生成方法签名(以头文件的形式),其中还包括在某些情况下可能需要的其他属性(例如 JNIEXPORTJNICALL)。

关于android - JNI 函数中的两个整数求和返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961809/

25 4 0
文章推荐: html - CSS - 处理背景和图像
文章推荐: javascript - 如何更改带有切换类的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com