近期通过研究SDL源码 得出android JNI c/c++调用java 无需新建虚拟机: 具体步骤如下
第一步获得:两个参数 JNIEnv和jclass
void Java_com_Test_Audio_Init( JNIEnv* env,jclass cls, jobject thiz ) { InitJNI(env,cls); } bool InitJNI(JNIEnv* env,jclass cls) { m_Env=env; m_cls=cls; }
第二步
获得java那边定义的函数的名字
第三步 传递参数调用java 函数
char *str="god_is_a_girl.mp3"; char str[]="nihao"; jbyte *by = (jbyte*)str; jbyteArray jarray = m_Env->NewByteArray(strlen(str)); m_Env->SetByteArrayRegion(jarray, 0, strlen(str), by); ///调用java函数 m_Env->CallStaticBooleanMethod(m_cls, midCreateGLContext,jarray);
原文地址:https://www.cnblogs.com/zhujiabin/p/10605524.html
时间: 2024-09-27 01:03:07