Я изучаю использование C в Android App через NDK. В моей первой попытке я хотел бы передать массив Java в качестве аргумента в функцию 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 _?
Заранее спасибо.