Java 从c/c++;在Android中

Java 从c/c++;在Android中,java,android,c++,c,java-native-interface,Java,Android,C++,C,Java Native Interface,我正在尝试从c/c++调用java API。我写了这样的代码: #include <stdio.h> #include <stdlib.h> #include <unistd.h> #incldue <jni.h> int main() { JavaVM *vm; JNIEnv *env; JavaVMInitArgs vm_args; vm_args.version = JNI_VERSION_1_2; vm_ar

我正在尝试从c/c++调用java API。我写了这样的代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#incldue <jni.h>
int main()
{

   JavaVM *vm;
   JNIEnv *env;
   JavaVMInitArgs vm_args;
   vm_args.version = JNI_VERSION_1_2;
   vm_args.nOptions = 0;
   vm_args.ignoreUnrecognized = 1;

    // Construct a VM
    jint res = JNI_CreateJavaVM(&vm, &env, &vm_args);

    jclass cls = env->FindClass("Classname");
    jmethodID mid = env->GetStaticMethodID(cls, "methodname", "(I)V");
    env->CallStaticVoidMethod(cls, mid, 100);

     /* We are done. */
    vm->DestroyJavaVM();
}
#包括
#包括
#包括
#包括
int main()
{
JavaVM*vm;
JNIEnv*env;
JavaVMInitArgs vm_args;
vm_args.version=JNI_version_1_2;
vm_args.nOptions=0;
vm_args.ignoreunrecogned=1;
//构建虚拟机
jint res=JNI_CreateJavaVM(&vm,&env,&vm_args);
jclass cls=env->FindClass(“类名”);
jmethodID mid=env->GetStaticMethodID(cls,“methodname”,“I)V”);
环境->调用静态无效方法(cls,mid,100);
/*我们完了*/
vm->developmentjavavm();
}
在运行时,它抛出一个错误,如在使用JNI调用API之前创建JniInvocation实例失败 有什么建议吗?

谢谢。

也许可以尝试检查调用
JNI\u CreateJavaVM
的错误。我怀疑错误发生在调用
JNI\u CreateJavaVM
的过程中。至少在安卓系统中,有一种方法可以查看是否创建了所需的
JniInvocation
对象。不过OP没有指定他要针对哪个虚拟机。我想,错误在
JNI_CreateJavaVM
函数中。但是我们如何删除它呢?@Michael,我看到了那个代码,但没有得到任何关于如何删除它的信息。我不确定你想做什么,但您可以在此处找到旧dalvik命令行实用程序的源代码:。你有[安卓]标签;你是在桌面上运行还是在安卓设备上运行?您链接的虚拟机是什么?可能尝试检查对
JNI\u CreateJavaVM
的调用是否有错误。我怀疑错误发生在对
JNI\u CreateJavaVM
的调用过程中。至少在安卓系统中,有一种方法可以查看是否创建了所需的
JniInvocation
对象。不过OP没有指定他要针对哪个虚拟机。我想,错误在
JNI_CreateJavaVM
函数中。但是我们如何删除它呢?@Michael,我看到了那个代码,但没有得到任何关于如何删除它的信息。我不确定你想做什么,但您可以在此处找到旧dalvik命令行实用程序的源代码:。你有[安卓]标签;你是在桌面上运行还是在安卓设备上运行?你链接的虚拟机是什么?