美文网首页
解决:dlopen failed: cannot locate

解决:dlopen failed: cannot locate

作者: 请叫我果爸 | 来源:发表于2020-05-23 10:23 被阅读0次

最近在学习音视频,因为我是一名Android开发,所以准备从jni开始一步步学起。因为刚刚开始学,有很多问题不懂。
从网上下载最新ffmpeg之后,用ndk打包成so,就放进demo里面了,但是运行之后,一直报dlopen failed: cannot locate symbol "iconv_open" referenced by "/data/app/com.explain.media-zaq-Uo9-rGBL7yZPOkKkGA==/lib/arm/libavcodec.so"...这个错误。

问题原因:

在libavcodec.so中找不到iconv_open这个符号,但打开ffmpeg搜索,是可以看到这个符号。我先从网络上找到别人已经打包好的.so文件,放到我的项目里面,运行,成功了。于是就怀疑自己编译的so没有没引进来这个c文件。

解决办法:

我发现我在so打包中(详见《Android FFmpeg学习(一),将FFmpeg编译成so文件》文章),将NDK环境写错了。因为我使用了windows-x86_64,这是windows下面ndk的路径。我是MAC电脑,所以在ndk对应的路径下,只有darwin-x86_64环境,所以将shell脚本中的NDK环境路径修改为正确的路径,重新编译打包,放到Android环境下使用。这次正确了。

相关文章

网友评论

      本文标题:解决:dlopen failed: cannot locate

      本文链接:https://www.haomeiwen.com/subject/yekkahtx.html