实例化stl map时android应用程序崩溃

时间:2018-04-07 15:21:26

标签: android android-ndk java-native-interface

我一直在尝试使用我在Android应用程序中用c ++编写的库,并且它已经因非法指令错误而崩溃。我开始评论代码的一部分,直到没有留下任何东西,但成员变量是stl矢量和地图。所以我尝试直接调用除了创建地图之外什么都不做的函数,当我这样做时,android studio中的调试器停在了地图的构造函数中。如果我删除地图并执行其他任何操作,例如从资产文件夹中读取一些文件,并将其内容作为字符串返回到java界面,则可以正常工作。有没有办法让我继续使用c ++ map,因为似乎android c ++运行时实现在这里有错?

log cat

A / libc:致命信号4(SIGILL),代码2,故障地址0x7f795a502e89 in tid 585

崩溃讯息

SIGILL(信号SIGILL:非法指令操作数)

jni代码

extern "C"
JNIEXPORT void JNICALL
Java_com_hasebou_MainActivity_test(JNIEnv *env, jobject instance){

std::map<int,int> hello;
}

java中的声明

public native void test();

1 个答案:

答案 0 :(得分:0)

原来启用avx指令导致问题,因为android只支持SSE