如何解决回调 JNI C 作为 C 上的参数传递
我想在下面声明和调用回调的方式转换的 C 函数。
typedef void (*GenmsgCallback_t)(char *genmsgResponse,size_t genmsgResponseLen);
void genmsg_cb(char *rcvData,size_t rcvDataLen) {
for (int i = 0; i < rcvDataLen; i++) {
printf("%c",rcvData[i]);
}
printf("\n");
}
我如何使用 main
函数调用回调
retVal = init_genmsg_module(genmsg_cb,RootConfigFilePath_Gen_Msg);
//Declaration for main function goes like this
int init_genmsg_module(GenmsgCallback_t fnptrGenmsgCb,const char *rootCfgFilePath);
我想通过ndk把C函数改成JAVA代码。我已经完成了一个这样的调用者功能,它在内部调用 C 函数,但我无法通过 JAVA 创建 cb,因此我可以调用 main
函数。
JNI 代码是这样的:
JNIEXPORT jint JNICALL Java_com_example_genralmsg_1module_caller_1genmsg_initgenmsg(JNIEnv *env,jclass caller_genmsg,jstring rootFilePath){
const char *filepath = (*env)->GetStringUTFChars(env,rootFilePath,0);
return init_genmsg_module(genmsg_cb,filepath);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。