我试图在std:thread
中的jni
创建一个简单的android
。但是我的应用程序因以下错误而崩溃。
A/libc: Fatal signal 6 (SIGABRT) at 0x00005606 (code=-6), thread 22059
JNI来源:
void threadRun(){
sleep(5);
}
JNIEXPORT void JNICALL Java_com_helloworld_JNIWrapper_init
(JNIEnv *env, jobject obj)
{
thread th(threadRun);
th.join(); //or th.detach() doesn't work either
}
Application.mk:
APP_STL := gnustl_static
APP_CPPFLAGS += -std=c++11
我在主UI线程中调用了Activity中的init
方法。从后台主题来看,它也没有工作。
答案 0 :(得分:1)
好吧,它似乎是一个“众所周知,未公开”的clang错误,目前的NDK版本尚未修复(在撰写本文时,r10d为我)。
该解决方案似乎使用g ++进行编译。为此,只需将以下行添加到gradle脚本中:
externalNativeBuild {
cmake {
arguments "-DANDROID_TOOLCHAIN=gcc"
}
}
一些链接:
希望有所帮助......(我花了很多时间,doh!)