Символы avcodec не найдены
Я пытаюсь создать пример кода в библиотеке FFMPEG. Я добавляю libavcode.h, libavcode.a в свой проект и задаю поиск заголовка usr / local / include, а поиск библиотеки - usr / local / lib.
когда я компилирую пример, я получил эти ошибки... (все они связаны с библиотекой avcodec)
{
Undefined symbols:
"avcodec_find_encoder(CodecID)", referenced from:
video_encode_example(char const*, CodecID)in main.o
"avcodec_open2(AVCodecContext*, AVCodec*, AVDictionary**)", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_decode_example(char const*, char const*)in main.o
"av_init_packet(AVPacket*)", referenced from:
video_decode_example(char const*, char const*)in main.o
"av_free(void*)", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_encode_example(char const*, CodecID)in main.o
video_encode_example(char const*, CodecID)in main.o
video_decode_example(char const*, char const*)in main.o
video_decode_example(char const*, char const*)in main.o
"avcodec_alloc_context3(AVCodec*)", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_decode_example(char const*, char const*)in main.o
"av_opt_set(void*, char const*, char const*, int)", referenced from:
video_encode_example(char const*, CodecID)in main.o
"av_image_alloc(unsigned char**, int*, int, int, PixelFormat, int)", referenced from:
video_encode_example(char const*, CodecID)in main.o
"avcodec_encode_video(AVCodecContext*, unsigned char*, int, AVFrame const*)", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_encode_example(char const*, CodecID)in main.o
"avcodec_register_all()", referenced from:
_main in main.o
"avcodec_find_decoder(CodecID)", referenced from:
video_decode_example(char const*, char const*)in main.o
"avcodec_decode_video2(AVCodecContext*, AVFrame*, int*, AVPacket const*)", referenced from:
video_decode_example(char const*, char const*)in main.o
video_decode_example(char const*, char const*)in main.o
"avcodec_close(AVCodecContext*)", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_decode_example(char const*, char const*)in main.o
"avcodec_alloc_frame()", referenced from:
video_encode_example(char const*, CodecID)in main.o
video_decode_example(char const*, char const*)in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
} знаете, почему у меня такая проблема?
Спасибо
1 ответ
Решение
Решение заключается в добавлении этого в заголовок, потому что FFMPEG написан на C, я думаю,
extern "C"
{
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include "avassert.h"
#include "avutil.h"
#include "intreadwrite.h"
#include "mem.h"
}