码迷,mamicode.com
首页 > 其他好文 > 详细

(g_jvm)->AttachCurrentThread(&env, NULL) 后使用 (g_jvm)->DetachCurrentThread();程序报错

时间:2016-04-05 16:04:34      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

(g_jvm)->AttachCurrentThread(&env, NULL)  后使用 (g_jvm)->DetachCurrentThread();程序报错

ERROR: detaching thread with interp frames (count=13)

 

 

在java线程中不能使用AttachCurrentThread、DetachCurrentThread方法来获取JNIEnv。
调用DetachCurrentThread函数的地方在java线程中,即在java调用C++代码时在C++代码中调用了AttachCurrentThread方法来获取JNIEnv,此时JNIEnv已经通过参数传递进来,你不需要再次AttachCurrentThread来获取。在释放时就会报错。

 

int status;
JNIEnv *env;
bool isAttached = false;
status = g_jvm->GetEnv((void**)&env, JNI_VERSION_1_6);
if(status < 0)
{
  g_jvm->AttachCurrentThread(&env, NULL);//将当前线程注册到虚拟机中.
  isAttached = true;
}

env->CallVoidMethod(g_obj, receiveSendLogInInfo);

if(isAttached)
g_jvm->DetachCurrentThread();

(g_jvm)->AttachCurrentThread(&env, NULL) 后使用 (g_jvm)->DetachCurrentThread();程序报错

标签:

原文地址:http://www.cnblogs.com/fyqds/p/5354989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!