Я пытаюсь вызвать java-метод из кода NDK. код C++:Вызов метода Java из Android NDK SIGSEGV
extern "C" JNIEXPORT jboolean JNICALL
Java_com_lipman_whiteboard_CameraProcessing_processBitmap(JNIEnv * env, jobject obj)
{
jclass callingClass = env->GetObjectClass(obj);
jmethodID mid = env->GetMethodID(callingClass, "setProgressMax", "(I)V");
env->CallVoidMethod(obj, mid, 7);
}
«mid» всегда имеет значение null в приведенном выше фрагменте. Соответствующими частями класса java являются:
public class CameraProcessing
{
private static native boolean processBitmap();
private void setProgressMax(int max)
{
}
Кто-нибудь знает, почему «середина» всегда равна нулю? Что я делаю не так?
Эй, будьте скучным и скажите, что вы используете proguard? – Tom
, вы должны добавить к нему тег «JNI», видя, что именно здесь вы используете. Я бы попытался помочь, но это было давно, так как я сам JNI ... Единственное, что я могу придумать, это то, что вы не указали свой код инициализации для указателя env. – Dennis
потому что функция закрыта. – eozgonul