我们有一个OCX,它在Excel中用作SQL查询构建器。 OCX是一个运行查询构建器的包装器,它是用Java编写的。 Excel 2010中的一切工作正常。使用Excel 2013,我们有时会在实例化jvm时出现内存不足错误。有时候它有效,有时它不起作用。以下是创建jvm的代码:
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.compiler=NONE";
vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_TRUE;
LOG("starting JVM ");
jint returnCode = JNI_CreateJavaVMptr(&jvm, (void**)&env, &vm_args);
if (returnCode < 0)
{
string error = "Could not start JVM: ";
error += getErrorMessage(returnCode);
LOG("error starting JVM: " << error);
throw EXCEPTION(error.c_str());
}
else
{
LOG("JVM started");
}
我们使用的是旧版Visual Studio(2003)和Java 1.6。我们可以将选项传递给JNI_CreateJavaVMptr来解决内存不足错误吗?