可以使用JNI_GetCreatedJavaVMs。
jsize nVMs;
jni_getcreatedjavavms(null,0,nVMs ); //1.justgettherequiredarraylength
javavm * * buffer=new javavm * [ nvms ];
jni_getcreatedjavavms(buffer、nVMs、nVMs ); //2.get the数据
此代码是“安全”版本,询问缓冲区的大小,然后再次调用以检索数据。 但是,由于主要的windowsJVM(hotspot )进程不支持多个JVM,因此可能只需要一个元素来分配缓冲区。 由于JNI_GetCreatedJavaVMs是调用API的一部分,因此JVI将
I’mnotwritinganativelibrarytobeconsumedbyjava
在库中创建JVM时,必须加载jvm.dll,因此需要的一切。 因为没有写库是怎么调用的,所以我真的帮不了你。 如果库正在创建另一个JVM,或者从JVM加载的本机库中使用,并且由于某种原因没有将JavaVM *传递给你,请尝试执行以下操作:
#包含
#包含
//.
typedef jint (JNI呼叫* getcreatedjavavms ) ) JavaVM**,jsize,jsize*;
getcreatedjavavmsjni _ getcreatedjavavms;
//.
JNI _ getcreatedjavavms=(getcreatedjavavms ) getprocaddress(getmodulehandle (
text(JVM.dll )、) JNI_GetCreatedJavaVMs );