所以我有一个c ++类,它有很多函数,它们是每个函数内的嵌套调用(请看下面的示例)。
void function1(){
function2();
function3();
}
void function2(){
//Some implementation of function 2 here
}
void function2(){
//Some implementation of function 3 here
}
我现在想编写一个JNI包装器来调用function1,我的问题是我是否必须为所有3个函数编写JNI包装器,或者如果我为function1编写JNI就足够了?
另外,如果我必须为所有函数编写JNI包装器,那么函数1是否可以调用function2&功能3?因为在根据JNI修改函数名后,我该如何调用它们?
我的JNI示例:
JNIEXPORT void JNICALL Java_com_example_MainActivity_function1(){
//How do I call other functions here?
}
任何指针都会受到赞赏。
编辑:
请求的C ++类:
void Controller::initialize(InitData Data)
{
// Create all managers
Log.d("Log","came in logd");
readConfig(Data);
createManagers();
// Create UserInterface
createUserInterface();
// Initialize all managers
initializeManagers();
// Initialize all modules
initializeModules(Data);
// Initialize loggers
m_sessionModule->waitForSessionResponse();
}
被调用的其余函数在同一个类中定义
答案 0 :(得分:0)
C ++类:
class Controller
{
public:
void function1()
{
function2();
function3();
}
void function2(){}
void function3(){}
}
JNI方法:
JNIEXPORT void JNICALL Java_com_example_MainActivity_function1()
{
//getControllerInstance() must to return the already created
//instance of the class.
Controller* controller = getControllerInstance();
if(controller != nullptr)
controller->function1();
}
//If you want to call function2() method from Java.
JNIEXPORT void JNICALL Java_com_example_MainActivity_function2()
{
//getControllerInstance() must to return the already created
//instance of the class.
Controller* controller = getControllerInstance();
if(controller != nullptr)
controller->function2();
}
P.S。上面的代码就是一个例子,它不是代码。