我的问题与this one一致,但没有关于我的具体问题的详细信息。 我不明白一件事,我没有在规范中找到,我很惊讶没有人问它。 考虑运营商:JNI:使java对象成为C++类成员是否安全?
m_str = m_env->NewStringUTF("string");
如何为Java对象的引用在C + +中创建算的?可以将这些对象存储在本地(C++)方法调用中,还是一旦С++方法完成执行并将控制权返回给Java,它们将被收集起来?
我的问题与this one一致,但没有关于我的具体问题的详细信息。 我不明白一件事,我没有在规范中找到,我很惊讶没有人问它。 考虑运营商:JNI:使java对象成为C++类成员是否安全?
m_str = m_env->NewStringUTF("string");
如何为Java对象的引用在C + +中创建算的?可以将这些对象存储在本地(C++)方法调用中,还是一旦С++方法完成执行并将控制权返回给Java,它们将被收集起来?
只要您使用NewGlobalRef
将本地引用转换为全局引用,然后将Java对象引用存储为C++类的成员。
将本地参照转换为全局参照后,请致电DeleteLocalRef
。
最后,作为C++析构函数的一部分,请确保在对成员Java对象的引用上调用DeleteGlobalRef
。
您的C++类的拷贝构造函数也必须调用NewGlobalRef
。
非常感谢,我已阅读了一些文档和JNI规范的一部分,但我忽略了这一部分。 –
您的问题与哪一个相符?我没有看到任何链接。 –
对不起,我的坏,修好了! –