0
私は本当に奇妙な問題に遭遇しました。何が間違っているのかわかりません。すべてをコメントアウトしていますが、それでもクラッシュします。ここで SIGSEGV Android JNI空のメソッド
はJavaのパート
package net.example.library.arrayprocessor;
public class ArrayProcessor {
static {
System.loadLibrary("array-processor");
}
public ArrayProcessor() {
}
public native short[] process(short[] readBuffer);
}
私のコードで、
buffer = arrayProcessor.process(buffer);
JNIの一部 cmakeの
を次のように私はそれを呼び出していますprocessor.cpp
#include <jni.h>
#include <stdio.h>
#define LOGI(...) \
((void)__android_log_print(ANDROID_LOG_INFO, "VoiceProcessor::", __VA_ARGS__))
extern "C" {
JNIEXPORT jshortArray JNICALL
Java_net_example_library_arrayprocessor_ArrayProcessor_processor(
JNIEnv *env, jobject instance, jshortArray readBuffer_);
}
JNIEXPORT jshortArray JNICALL
Java_net_example_library_arrayprocessor_ArrayProcessor_processor(
JNIEnv *env, jobject instance, jshortArray readBuffer_) {
/* get size of the array */
jsize len = env->GetArrayLength(readBuffer_);
/* get the body of array; it will be referecende by C pointer */
jshort *body = env->GetShortArrayElements(readBuffer_, 0);
/* do some stuff */
for (int i = 0; i < len; i++) {
printf("Short value: %hd\n", body[i]);
/* update value */
body[i] = 0;
}
/* release body when you decide it is no longer needed
Pass changes back to Java */
env->ReleaseShortArrayElements(readBuffer_, body, JNI_COMMIT);
}
しかし、私はそれを呼び出すようにしようとすると、それは私がメソッドの本体をコメントアウトしようとしてい
A/libc: Fatal signal 11 (SIGSEGV) at 0xc0c5a8f7 (code=1), thread 19335 (pool-3-thread-1)
エラーがスローされますが、それでも同じエラー。
A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x6 in tid 3749 (pool-4-thread-1)
私のコードに間違いがありますか?どのようにこのような問題を解決し、デバッグするのですか?
私はあなたが値を返すされていない任意の助け
AWESOME !!できます !!! – bxfvgekd
'-Werror = return-type'は、あなたのためにこの問題を捉えたはずのcflagです。 –