我想我知道该怎么做,我只是想戳一下 SO 社区,看看我是否在正确的轨道上,因为我没有从我的研究中看到关于这个特定主题的任何信息。
我有一些自定义 Java(数据模型)类,我希望可以在我的应用程序的 native C++ 端访问这些类。我意识到这两个环境是相当独立的,所以我很可能必须用 C++ 创建我的数据模型的“拷贝”,并在我的 nativeLib JNI 文件中初始化它们?
我假设我不能只是将 java 类“转换”为 c++ 类,因为编译器可能无法进行此类转换。我必须通过 JNI 方法调用手动管理我需要的每个字段。
这是正确的,还是有我不知道的更好的方法?
我想一个例子可能是这样的:
Foo.java
public class Foo {
boolean A;
boolean B;
boolean C;
}
native 库.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
}
最佳答案
I'm assuming I can't just "convert" the java class to the c++ class, since the compiler probably won't be able to do such a conversion.
你的假设是对的。如果您寻求 native 和 Java 之间代理类的自动化,请查看 SWIG .它能够扫描头文件并构建将 native 类公开给 JVM 的包装器 (.cpp + .java) 代码。这不完全是您要问的问题,但可能非常接近。
关于java - 将自定义 Java 数据模型传递到我的 native 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719005/