首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为android studio 2.2构建ffmpeg 3.2中的“导入-库-NOTFOUND”

为android studio 2.2构建ffmpeg 3.2中的“导入-库-NOTFOUND”
EN

Stack Overflow用户
提问于 2016-10-31 23:46:18
回答 1查看 1K关注 0票数 4

我正在尝试为Android构建和使用ffmpeg。我的Andoid版本是2.2.2,ffmpeg是3.2。下面是关于如何导入重新构建库的Android文档,我认为我的设置是正确的,但是我一直在获取这个错误。

代码语言:javascript
复制
ninja: error: 'avcodec-NOTFOUND', needed by '../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/...

这是设置

代码语言:javascript
复制
add_library( avcodec SHARED IMPORTED )
add_library( avdevice SHARED IMPORTED )
add_library( avfilter SHARED IMPORTED )
add_library( avformat SHARED IMPORTED )
add_library( avutil SHARED IMPORTED )
add_library( swscale SHARED IMPORTED )

set_target_properties( avcodec
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libavcodec.so
                        )
set_target_properties(  avdevice
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libavdevice.so
                        )
set_target_properties( avfilter
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libavfilter.so
                        )
set_target_properties( avformat
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libavformat.so
                        )
set_target_properties( avutil
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libavutil.so
                        )
set_target_properties( swscale
                        PROPERTIES FFMPEG_LIB_IMPORTED_LOCATION
                        libs/ffmpeg/${ANDROID_ABI}/lib/libswscale.so
                        )

# Specifies a path to native header files.
include_directories(
                    libs/ffmpeg/${ANDROID_ABI}/include
                    )

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       avcodec avdevice avfilter avformat avutil swscale
                       ${log-lib}
                        )

如果我指定了完整的库名libavcodec.so.,错误就会消失。

代码语言:javascript
复制
target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       libavcodec.so libavdevice.so libavfilter.so libavformat.so libavutil.so libswscale.so
                       ${log-lib}
                        )

我想知道是否有人遇到过类似的问题,或者知道为什么编译是这样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 22:10:23

根据Tsyvarev的输入,我在这里得到的是编译和链接。

代码语言:javascript
复制
add_library( avcodec SHARED IMPORTED )
add_library( avdevice SHARED IMPORTED )
add_library( avfilter SHARED IMPORTED )
add_library( avformat SHARED IMPORTED )
add_library( avutil SHARED IMPORTED )
add_library( swscale SHARED IMPORTED )

set_target_properties( avcodec
                        PROPERTIES IMPORTED_LOCATION
                        ../../../../libs/${ANDROID_ABI}/lib/libavcodec.so
                        )
set_target_properties(  avdevice
                        PROPERTIES IMPORTED_LOCATION
                      ../../../../libs/${ANDROID_ABI}/lib/libavdevice.so
                        )
set_target_properties( avfilter
                        PROPERTIES IMPORTED_LOCATION
                        ../../../..//libs/${ANDROID_ABI}/lib/libavfilter.so
                        )
set_target_properties( avformat
                        PROPERTIES IMPORTED_LOCATION
                        ../../../../libs/${ANDROID_ABI}/lib/libavformat.so
                        )
set_target_properties( avutil
                        PROPERTIES IMPORTED_LOCATION
                        ../../../../libs/${ANDROID_ABI}/lib/libavutil.so
                        )
set_target_properties( swscale
                        PROPERTIES IMPORTED_LOCATION
                        ../../../../libs/${ANDROID_ABI}/lib/libswscale.so
                        )

# Specifies a path to native header files.
include_directories(
                    libs/${ANDROID_ABI}/include
                    )

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       avcodec avdevice avfilter avformat avutil swscale
                       ${log-lib}
                        )

注:以下是重要的区别:

  • set_target_properties中的路径必须是绝对的。下面是使用“.././../”四个级别到libs目录;但是,对于include_directory中的头文件路径,它需要是相对的。我使用了绝对路径,无法找到包含文件。顺便说一下,我删除了“ffmpeg”文件夹。
  • set_target_properties中的导入位置属性需要是IMPORTED_LOCATION
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40352177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档