- 412 名前:409 mailto:sage [05/02/12 06:25:57 ]
- >>410
例えば下記のサイトのコードを流用したとします. ttp://www.ki.rim.or.jp/~kuro/Java/JNI/JNI-07.html public class HelloVM { static void hello() { System.out.println("HelloVM(Java) executed.\n");} } #include "stdafx.h" #include "jni.h" int hoge(void) { // 前略 nResult = JNI_GetDefaultJavaVMInitArgs(&vm_args); if ( nResult == 0 ) { printf("Success to JNI_GetDefaultJavaVMInitArgs vm.\n");} else { printf("Fail to JNI_GetDefaultJavaVMInitArgs vm.\n"); } // 中略 nResult = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); if ( nResult == 0 ) { printf("Success to create vm.\n"); } else { printf("Fail to create vm. [%ld]\n", nResult); return 0; } // 後略 return 0; } int main(void){ for(int i=0;i<3;i++){ hoge(); } return0; } こんな感じのコードを実行すると,ループの初回は HelloVM(Java) executed. が出力されます. しかしループの2回目は Fail to create vm. が出力されます. このことからJVMの作成に失敗したと考えました. # 当然ですが上記のようなループを含まないJNIのプログラムは正常に動作します. 現在は AttachCurrentThread と DetachCurrentThread が, 関連するのではないかと思っているのですが間違っていますでしょうか.
|

|