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

Posted 莱纳·龙特

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(g_jvm)->AttachCurrentThread(&env, NULL) 后使用 (g_jvm)->DetachCurrentThread();程序报错相关的知识,希望对你有一定的参考价值。

(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();程序报错的主要内容,如果未能解决你的问题,请参考以下文章

MySQL视图和自定义函数

爬取天堂图片网图片并存储

php将获取的数组变成字符串传入txt文本。。。

dvd管理系统

爬取腾讯社招职位信息

爬取腾讯社招职位信息