0

I write to test ffmpeg and call ffmpeg function, but it alwasy tell me link err: can not found ffmpeg function: this is my code:

#ifdef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
#include <libavutil/imgutils.h>
#include <libavutil/samplefmt.h>
#include <libavutil/timestamp.h>
#include <libavformat/avformat.h>
static const char *src_filename = NULL;
static const char *video_dst_filename = NULL;
static const char *audio_dst_filename = NULL;
static AVFormatContext *fmt_ctx = NULL;
int main(int argc, char **argv) {
    int ret = 0;
    if (argc != 4) {
        fprintf(stderr, "usage: %s  input_file video_output_file audio_output_file\n"
                    "API example program to show how to read frames from an input file.\n"
                    "This program reads frames from a file, decodes them, and writes decoded\n"
                    "video frames to a rawvideo file named video_output_file, and decoded\n"
                    "audio frames to a rawaudio file named audio_output_file.\n",
            argv[0]);
        exit(1);
    }
    // src_filename = argv[1];
    src_filename = "/tmp/a.mp4";
    video_dst_filename = argv[2];
    audio_dst_filename = argv[3];

    /* open input file, and allocate format context */
    if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {
        fprintf(stderr, "Could not open source file %s\n", src_filename);
        exit(1);
    }
    avformat_close_input(&fmt_ctx);
}

the follow is build command:

clang++ -I /usr/local/apps/homebrew/Cellar/ffmpeg/4.4_1/include/ -L/usr/local/apps/homebrew/Cellar/ffmpeg/4.4_1/lib -lavformat main.cpp

and the terminal output:

Undefined symbols for architecture x86_64:
  "avformat_open_input(AVFormatContext**, char const*, AVInputFormat*, AVDictionary**)", referenced from:
      _main in main-f2a6f0.o
  "avformat_close_input(AVFormatContext**)", referenced from:
      _main in main-f2a6f0.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

then Who can tell me why.

0 Answers0