不知使用'JNI_CreateJavaVM'初始化虚拟机的时候需要包含什么so库跟头文件吗,我直接#include <jni.h>不行会报错:
error: 'JNI_CreateJavaVM' was not declared in this scope网上说jre目录下有libjvm.dll还是libjvm.lib的,但是我的是android下的,有的也是so库,而且libjvm.dll我也找不到。不知有没有谁使用过jvm的,能否讲下具体需要怎么做,网上的资料都没有说该怎么做,都是说:调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指参考链接:
http://www.cnblogs.com/RayLee/archive/2010/10/21/1857348.html

解决方案 »

  1.   

    该接口没有向 NDK 开放, 别费劲了
      

  2.   

    没有像NDK开放这么蛋疼那不知有其他的办法吗
      

  3.   

    在Android.mk中加上一句:LOCAL_SHARED_LIBRARIES := libdvm 就OK了
      

  4.   

    还有一个比较费事的办法,到你的android source code根目录下使用grep命令搜索JNI_CreateJavaVM这个方法的实现位置,引用对应的library就可以了
      

  5.   

    动态加载
    typedef int (*JNI_CreateJavaVM_Type)(JavaVM**, JNIEnv**, void*);    JavaVM* vm = NULL;
        JNIEnv* env = NULL;
        JavaVMInitArgs initArgs;
        JavaVMOption options[3];
        char* slashClass = NULL;
        int optionCount, curOpt, i, argIdx;
    void *handle = dlopen("/system/lib/libdvm.so", RTLD_LAZY);
    if(!handle){
    printf("dlopen failed!!\n");
    return 0;
    }
     
    JNI_CreateJavaVM_Type JNI_CreateJavaVM_Func = (JNI_CreateJavaVM_Type)dlsym(handle, "JNI_CreateJavaVM");
    if(!JNI_CreateJavaVM_Func){
    printf("dlsym failed, no the func ?!!\n");
    goto END;
    }


    //设置参数省去 
    if (JNI_CreateJavaVM_Func(&vm, &env, &initArgs) < 0) {
            fprintf(stderr, "Dalvik VM init failed (check log file)\n");
            goto END;
        }、、