Java 从c/c++;在Android中
我正在尝试从c/c++调用java API。我写了这样的代码: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
#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命令行实用程序的源代码:。你有[安卓]标签;你是在桌面上运行还是在安卓设备上运行?你链接的虚拟机是什么?