最近项目要丛arm32 升级到arm64,项目中两个so 需要重新编译64位的。
解决完相关语法问题后,成功编译出64 位的so。可是当把so放在工程中后,发生了crash log如下
然后使用ndk 的addr2line 定位到具体出问题的类和具体位置。(记得要使用有符号的so 否则都是??) 然后定位到出问题的代码是一个跟结构体覆值的代码。 rates->data_num = measurenum 这行代码出的错。但是这行代码只有一个简单的赋值的操作。猜测rates 是空。那肯定是rates = av_mallocz...这一行返回的是空。但是av_mallocz 是ffmpeg 中的方法,为什么会是空呢。我猜测是没有头文件,于是把mem.h引入进来。 重新build so放入项目中。然后发现正常了。此处有个疑问为什么编译32位的so是正常的,编译64位的so就需要引入对应的头文件。有知道的吗?
网友评论