如何解决在 CPP jni 中存储对象/字符串
在编写 Android 代码时,在 cpp 中保留内容的最佳方法是什么。我在每个框架上运行一些 OpenCV 代码。我有多个我想保留的对象,我并不总是想重新创建。示例是像路径这样的字符串,OpenCV 人脸检测器类。目前我只有一个类,我将它作为指针从 Java 传递到 CPP。但现在我想添加更多似乎不是一个好主意。
有关如何有效解决此问题的任何提示?
目前我正在做类似的事情:Android NDK,keeping live C++ objects
之前我已经不是解决方案的粉丝,但现在我想要多个对象,这使代码更加混乱
解决方法
您可以创建一个 C++ 类来保存您需要的所有对象作为成员。
头文件:
class MyCppClass
{
public:
MyCppClass();
~MyCppClass();
//Any other methods you need
std::string mPath;
//Any other member variables
}
源文件:
static MyCppClass gMyClass;
//JNI
extern "C"
{
//Your JNI functions can use gMyClass
void
Java_package_name_initPath(JNIEnv *env,jobject obj,jstring jPath)
{
const char* pPath = env->GetStringUTFChars(jPath,JNI_FALSE);
gMyClass.mPath = pPath; //Of course you can use setters/getters if you want
env->ReleaseStringUTFChars(jPath,pPath);
}
}
//MyCppClass implementation
MyCppClass::MyCppClass()
{
//...
}
现在您的 gMyClass 对象包含路径作为成员,您不必在本机和 Java 之间来回传递它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。