Android NDK 错误:Fatal signal 4 (SIGILL), code 1 (ILL_ILLOPC)

1,215 阅读1分钟

在编译 Ffmpeg 项目的时候,日志打印此错误:Fatal signal 4 (SIGILL), code 1 (ILL_ILLOPC)

ㅤ ㅤ ㅤ

kotlin native 方法代码:

private external fun prepareNative(dataSource: String): String

ㅤ ㅤ

ndk 中 c++ 方法代码:

Java_com_example_wangyiplayer_WyPlayer_prepareNative(JNIEnv *env, jobject thiz,
                                                     jstring data_source) {
        ...
}

谷歌查阅相关文章没有解决,百度查阅中文相关文章说是返回值不一致的原因。

打印日志没有查找到问题所在。后面只能重头理清流程,检测后发现 native 方法误加了返回值 string,c++ 方法没有添加返回值。 ㅤ ㅤ

ㅤ ㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

解决:把 native 方法的返回值改为 void 与 c++ 方法统一。

private external fun prepareNative(dataSource: String)

ㅤㅤ ㅤ ㅤ ㅤ


ㅤ ㅤ ㅤ ㅤ