//这是我的部分代码,结果是说调用和声明的不是同一个函数
HINSTANCE hLib = LoadLibrary("jvm.dll");
if (hLib == NULL)
{
MessageBox("不能载入动态链接库");
return ;
}
typedef LONG (CreateJVMFUNC)(JavaVM **pvm, JNIEnv **penv, JavaVMInitArgs *args);
CreateJVMFUNC* CreateJVM;
JavaVM *jvm;
JNIEnv *env;
JavaVMOption options[1];
JavaVMInitArgs vmargs;
LONG status;
options[0].optionString = "-Djava.class.path=.";
vmargs.version = JNI_VERSION_1_2;
vmargs.options = options;
vmargs.nOptions = 1;
CreateJVM = (CreateJVMFUNC*)::GetProcAddress(hLib,"JNI_CreateJavaVM");
try{
status = (*CreateJVM)(&jvm,&env,&vmargs);
}catch(...)
{
MessageBox("建立虚拟机错误");
return ;
}
switch(status){
case JNI_OK :{
MessageBox("虚拟机运行正常");
break;
}
case JNI_ERR:{
MessageBox("一般错误");
break;
}
case JNI_EDETACHED:{
MessageBox("线程从虚拟机脱离");
break;
}
case JNI_EVERSION:{
MessageBox("版本错误");
break;
}
case JNI_ENOMEM:{
MessageBox("内存不足");
break;
}
case JNI_EEXIST:{
MessageBox("虚拟机已经存在");
break;
}
case JNI_EINVAL:{
MessageBox("无效参数");
break;
}
default :{
MessageBox("不能处理错误");
}
}
if (status == JNI_OK){
jvm->DestroyJavaVM();
}