1

メソッドの 3 番目の引数JNI_CreateJavaVMは、3 番目の引数をJavaVMInitArgs構造体として受け取ります。

typedef struct JavaVMInitArgs { 
                     jint version; 
                     jint nOptions; 
                     JavaVMOption *options; 
                     jboolean ignoreUnrecognized; 
                 } JavaVMInitArgs;

これを初期化するにはどうすればよいですか? 私はそうすることができません。

JNI_CreateJavaVM のプロトタイプ:jint JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *vm_args);

vm_args を初期化するにはどうすればよいですか?

4

1 に答える 1

5

議論の末、コンパイラのセットアップに問題があるという結論に達しました。

正常にコンパイルおよびリンクできるようにするには、ライブラリをリンカーJNI_CreateJavaVMに追加する必要があります。jvm


最初の答え:

The Invocation APIを見ると、次の例で何をする必要があるかがわかります。

JavaVMInitArgs vm_args;
JavaVMOption options[4];

options[0].optionString = "-Djava.compiler=NONE";           /* disable JIT */
options[1].optionString = "-Djava.class.path=c:\myclasses"; /* user classes */
options[2].optionString = "-Djava.library.path=c:\mylibs";  /* set native library path */
options[3].optionString = "-verbose:jni";                   /* print JNI-related messages */

vm_args.version = JNI_VERSION_1_2;
vm_args.options = options;
vm_args.nOptions = 4;
vm_args.ignoreUnrecognized = TRUE;

/* Note that in the JDK, there is no longer any need to call 
 * JNI_GetDefaultJavaVMInitArgs. 
 */
res = JNI_CreateJavaVM(&vm, (void **)&env, &vm_args);
if (res < 0) ...
于 2012-06-08T06:00:16.057 に答える