gpt4 book ai didi

java - 在多个 jni 调用中保持某种 c++ 对象存活

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:36 26 4
gpt4 key购买 nike

我的 java 代码将调用现有的 c++ 代码来解析文件。它将生成一个保存许多数据的对象。我将调用 jni 的第二种方法来访问此类数据,当我调用第二种方法时,我必须再次解析文件。这显然是正确的行为。

有办法解决吗?顺便说一句:我是 c++ 的新手。

最佳答案

我不确定我是否理解你的问题。但我想你想要做的是在多个 jni 调用中保持某种 c++ 对象处于 Activity 状态。

你可以做很多事情。首先解析您的文件并将您的 C++ 对象存储在全局变量中。这是最简单的解决方案,但不是一个很好的解决方案。

您还可以将 c++ 对象的生命周期移动到 java 中。

jlong java_some_class_jni_method(...)
{
.... parse your text file ....
MyParseclass* cls = new MyParseclass(...);
....
return (jlong) cls;
}

但请记住,您需要再次删除此原生 C++ 类。所以你需要一个 jni 方法并确保调用它。

void java_some_calls_jni_method(..., jlong clsPtr)
{
MyParseclass* cls = (MyParseclass*)clsPtr;
... do maybe do something with cls and access the data...
delete cls; // do not use the jlong again in any call
}

顺便说一句:如果您发布一些代码,将会更有帮助。但我希望这里的伪代码能有所帮助。

关于java - 在多个 jni 调用中保持某种 c++ 对象存活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8397426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com