我想我知道该怎么做,我只是想戳一下 SO 社区,看看我是否走在正确的轨道上,因为我没有从我的研究中看到任何关于这个特定主题的信息。
我有一些自定义 Java(数据模型)类,我希望在我的应用程序的本机 C++ 端可以访问这些类。我意识到这两个环境是相当独立的,所以我很可能必须在 c++ 中创建我的数据模型的“副本”,并在我的 nativeLib JNI 文件中初始化它们?
我假设我不能只是将 java 类“转换”为 c++ 类,因为编译器可能无法进行这样的转换。我必须通过 JNI 方法调用手动管理我需要的每个字段。
这是正确的,还是有更好的方法我不知道?
我想一个例子可能是这样的:
Foo.java
public class Foo {
boolean A;
boolean B;
boolean C;
}
本机 lib.cpp
extern "C" {
std::unique_ptr<Foo> foo;
JNIEXPORT void JNICALL
Java_com_example_user_project_native_1Foo(JNIEnv *env, jobject instance, jbool jbooleanA, jbool jbooleanB, jbool jbooleanC) {
Foo->setA(jbooleanA);
Foo->setB(jbooleanB);
Foo->setC(jbooleanC);
}
Foo.h
class Foo {
private:
bool A;
bool B;
bool C;
public:
// add setters & getters here, or any other needed functions
}