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

标签 android android-ndk java-native-interface

我一直在尝试在 Android 应用程序中使用我用 C++ 编写的库,但它因非法指令错误而崩溃。我开始注释掉部分代码,直到只剩下成员变量,它们是 STL 向量和映射。所以我尝试直接调用除了创建 map 之外什么都不做的函数,当我这样做时,android studio 中的调试器停止在 map 的构造函数内。如果我删除 map 并做任何其他事情,比如从 Assets 文件夹中读取一些文件并将它们的内容作为字符串返回到 java 接口(interface),它就可以工作。有没有办法让我继续使用 c++ 映射,因为 android c++ 运行时实现似乎在这里有问题?

日志猫

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

崩溃信息

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();

最佳答案

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

关于android 应用程序在实例化 STL map 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49708856/

相关文章:

java - 我可以将 java 窗口句柄传递给 OpenGL-es

android - 想编译原生安卓二进制我可以在手机终端运行

java - 在另一个 JNI 函数中使用时 Oop 被破坏

android - 如何获取本地IP并显示在TextView中?

java - Viewpager 内部的 Android Viewpager 不显示布局

android - SSLException:连接已关闭:javax.net.ssl.SSLException:标签不匹配

android - 无法在 JNI 中更新 jobobject

android - GPU 监控在 Android Studio 1.4 中不起作用

c++ - 为 Android NDK 编译库

java - VS 2017无法打开包含文件 'jni.h'