Login
JNI Invocation API
122 просмотров
Перейти к просмотру всей ветки
scorpi_ nobody
in Antwort Simple 23.11.06 20:31
Я причин уже не помню, но у меня инициализационный код выглядел так -
void JVM::create()
{
library_handle_ = LoadLibrary( jvm_path_.c_str() );
if ( !library_handle_ )
throw ccm_error( std::string( "Can't load JVM from " + jvm_path_ ).c_str() );
createJavaVMPtr = (CreateJavaVM_t) GetProcAddress( library_handle_, "JNI_CreateJavaVM" );
if ( ! createJavaVMPtr )
throw ccm_error( std::string("Can't find JNI_CreateJavaVM in " + jvm_path_).c_str() );
env_ = 0;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
std::string cl_path = "-Djava.class.path=" + class_path_;
options[0].optionString = const_cast<char*>( cl_path.c_str() );
vm_args.version = 0x00010002;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_TRUE;
if ( createJavaVMPtr( &jvm_, reinterpret_cast<void**>(&env_), &vm_args ) < 0 )
throw ccm_error( "Cannot create JVM" );
if ( !env_ || !jvm_ )
throw ccm_error( "Cannot initialize JVM" );
}