我有一个将c ++指针转换为jlong的问题。这是我的情况:我使用JNI加载预训练的opencv机器学习模型ANN_MLP(因为opencv Android SDK中没有加载功能)并且加载功能运行良好。但问题是我不知道如何将这个c ++指针转换为jlong,就像我想为我的App返回这个指针一样。我用谷歌搜索但没有资金,所以我只使用memcpy来保存这个指针(也许这不是完美的方法)。还有一个有线的东西,无论我设置memcpy的大小,结果缓冲区(这里是jlong resutl)总是带有来自src缓冲区的8的Offset(这里是模型)。下面是我写的代码:
JNIEXPORT jint JNICALL _BridgeNativeModel_nativePredict
(JNIEnv *jenv, jclass, jlong thiz, jstring jFileName,jlong src, jlong dst){
Ptr<ml::ANN_MLP> model;
printf("thiz %p\n", &thiz);
memcpy(&model, thiz, 4); // always crashed here, memcpy failed
....
}
当我将这个返回的jlong对象转换为MLP指针进行预测时,我也不知道如何将其转换为模型指针:
Joke
提前感谢您的任何建议。 健