undefined reference to `avpriv_io_move'

来源:5-4 FFmpeg文件的删除与重命名

在覸青春

2021-09-27

#include <stdio.h>
#include <libavutil/log.h>
#include <libavformat/avformat.h>


int main(int argc,char *argv[])
{
	int ret;
	ret = avpriv_io_move("111.txt","222.txt");
	if(ret<0){
		av_log(NULL,AV_LOG_ERROR,"Failed to rename\n");
		return -1;
	}
	av_log(NULL,AV_LOG_INFO,"Success to rename\n");

	//delete url
	ret = avpriv_io_delete("./flys.txt");
	if(ret<0){
                av_log(NULL,AV_LOG_ERROR,"Failed to delete file\n");
                return -1;
        }
	av_log(NULL,AV_LOG_INFO,"Success to delete\n");
	
	return 0;
}

查看位置
pkg-config --cflags --libs libavformat libavutil
显示如下:
-I/usr/local/include -L/usr/local/lib -lavformat -lm -lz -lavcodec -pthread -lm -lz -lswresample -lm -lavutil -pthread -lm

开始编译:
gcc -g -o ffmpeg_del ffmpeg_file.c pkg-config --cflags --libs libavformat libavutil
显示错误信息:

ffmpeg_file.c: In function ‘main’:
ffmpeg_file.c:9:8: warning: implicit declaration of function ‘avpriv_io_move’ [-Wimplicit-function-declaration]
    9 |  ret = avpriv_io_move("111.txt","222.txt");
      |        ^~~~~~~~~~~~~~
ffmpeg_file.c:17:8: warning: implicit declaration of function ‘avpriv_io_delete’ [-Wimplicit-function-declaration]
   17 |  ret = avpriv_io_delete("./flys.txt");
      |        ^~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/cc5941QN.o: in function `main':
/home/flys/Fly/Test/ffmpeg_file.c:9: undefined reference to `avpriv_io_move'
/usr/bin/ld: /home/flys/Fly/Test/ffmpeg_file.c:17: undefined reference to `avpriv_io_delete'
collect2: error: ld returned 1 exit status

到这一步,实在是不晓得怎么解决了,希望老师解答一下…

写回答

1回答

李超

2021-09-28

到ffmpeg 源码中搜索这个API,应该是头文件位置变了;要么你就选择和我视频中一样的ffmpeg 版本;另外,实际上这块你可以跳过去,不影响后面内容的学习,等后面对ffmpeg 熟悉点之后再搞这块

0
1
在覸青春
恩 ,我已经跳过了 我应该是版本不一样 我找了.c里面的代码 没得这两个方法
2021-09-28
共1条回复

经典再升级-FFmpeg5.0核心技术精讲,打造音视频播放器

学好FFmpeg核心技术,做高效,高薪,有竞争力的音视频工程师

2726 学习 · 814 问题

查看课程