我一直在尝试使用我在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();
答案 0 :(得分:0)
原来启用avx指令导致问题,因为android只支持SSE