gpt4 book ai didi

java - 如何在 NDK 中计算 C 中的输入 int 数组

转载 作者:行者123 更新时间:2023-11-30 14:38:34 26 4
gpt4 key购买 nike

我正在通过NDK研究Android App中C的用法。在我的第一次尝试中,我想将 java int 数组作为 C 函数中的参数传递。项目编译,我没有任何编译问题。

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Sample s=new Sample();
int[] b={1, 2, 3};
int a=s.sum(b);
Log.i("aa","sum= "+a);

}


public class Sample {

static {
System.loadLibrary("sample");
Log.i("a", "Load sample");
}

public native int somma(int[] b);
}
#include <jni.h>
#include "sample.h" // Generated

JNIEXPORT jint JNICALL
Java_com_example_myapplication_Sample_somma(JNIEnv *env, jobject instance, jintArray b_) {
jint *b = (*env)->GetIntArrayElements(env, b_, NULL);

size_t n = sizeof(b_) / sizeof(jint);
jint result=0;

for (int i=0;i<n;i++) {
result+=(*b);
b++;
}

(*env)->ReleaseIntArrayElements(env, b_, b, 0);

return result;

}

问题出在 size_t n = sizeof(b_)/sizeof(jint); 指令上。如何确定数组 b_ 的元素数量?

提前谢谢您。

最佳答案

您可以使用 GetArrayLength 获取数组的长度:

jsize arrayLength = (*env)->GetArrayLength(env, b_);

关于java - 如何在 NDK 中计算 C 中的输入 int 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com