JNI: вызов метода из C ++, который принимает объект - PullRequest
3 голосов
/ 10 мая 2011

У меня есть простая проблема, которую я не могу найти ответ. Я написал метод в C ++, который должен вызывать метод в Java, который принимает объект. Например, мой код Java имеет:

public class MyClass {

    public class ReturnType {
    ...
    }

    public void methodToBeCalledFromC( ReturnType obj ) {
    ...
    }
}

И мой C ++ имеет:

const jclass classID = s_env->FindClass( className );
const jmethodID methodID = s_env->GetMethodID( classID, "methodToBeCalledFromC", "(LMyClass;)V" );

// The call.handler() function returns a reference to the ReturnType object
// This produces a compilier warning and causes a seg-fault.
s_env->CallVoidMethod( call.handler(), jmid, userInfo );

Я проверил classID и methodID, а также call.handler() возвращает jbject, для которого я вызвал NewGlobalRef(), поэтому я думаю, что все в порядке.

Можно ли передать задание таким образом?

1 Ответ

3 голосов
/ 10 мая 2011

Проверьте предупреждение компилятора - возможно, оно говорит вам кое-что важное!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...