2014-08-28 34 views
0

所以我需要使用jni来调用java方法。 我开始使用此代码:如何使用JNI在构建器C++应用程序中启动JVM

JNIEnv *env1; 
JavaVM** jvm1; 
JavaVMInitArgs vm_args1; 
JavaVMOption options1[1]; 
options1[0].optionString = "-Djava.class.path=D:\\Java Src\\TestStruct"; //Path to the java source code 
vm_args1.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6 
vm_args1.nOptions = 1; 
vm_args1.options = options1; 
vm_args1.ignoreUnrecognized = 0; 

int reAt = JNI_CreateJavaVM(jvm1, (void**)&env1, &vm_args1); 
if(reAt < 0) 
    Label1->Caption = "failed"; 
else 
    Label1->Caption = "Success"; 

我转换jvm.lib到OMF LIB在我的建设者C++应用程序的使用方法:

COFF2OMF jvm.lib jvm2.lib 

我加jvm2.lib到库路径还是传统链接有关JNI_CreateJavaVM函数的错误。

现在我的应用程序编译没有错误。

但它调用JNI_CreateJavaVM函数时会崩溃。

我说靠近我的.exe

什么是有步骤的PB中的jvm.dll?

如何修复它?

THX

+0

[使用JNI启动JVM Builder C++]的可能重复(http://stackoverflow.com/questions/25550578/use-jni-to-start-jvm-builder-c) – Tracer 2014-08-31 12:02:26

回答

1

的第一个参数JNI_CreateJavaVM应该是一个有效的指针JavaVM*

JavaVM* jvm1; 
int reAt = JNI_CreateJavaVM(&jvm1, ...); 

在你的榜样,jvm1未初始化。

有关详细信息,请参阅the documentation

相关问题