Как вызвать C ++ статическую функцию класса, используя JNI для Android

Я делаю приложение для Android, которое будет использовать библиотеку C ++. По этой причине мне нужно собрать проект C ++ с использованием Android-NDK. Но проблема, с которой я сейчас сталкиваюсь, заключается в том, как вызывать статическую функцию C ++ с использованием JNI.

В моем коде C ++ у меня есть одноэлементный класс. Как мы все знаем, для реализации одноэлементного класса нам нужно ввести статическую функцию, которая отвечает за создание экземпляра этого класса. Теперь мне нужно вызвать статическую функцию с использованием JNI для создания экземпляра, который я могу использовать в своем приложении для Android.

1

Решение

Вы можете сделать на стороне JNI:

long Java_mypackage_com_createSingleton(JNIEnv* env)
{
return MySingleton::getInstance();
}

bool Java_mypackage_com_useSingletonSomehow(long singleton)
{
return (MySingleton*)singleton->someFunc();
}

В синглтон-классе:

   MySingleton* getInstance()
{
if(instance_ == NULL)
{
instance_ = new MySingleton();
}
return instance_;

}

На стороне Java:

package mypackage.com;

class SingletonUser
{
private long mSingletonInstance;

public SingletonUser() {
mSingleton = createSingleton();
}

public boolean someFunc() {
return useSingletonSomehow(mSingletonInstance);
}

private native boolean useSingletonSomehow(long instance);
private native long createSingleton();

}

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector