7

この問題は何日も私を悩ませました。

ffmpeg をコンパイルしてインストールした後、それを使用してデモをビルドしようとしましたが、常に失敗します。

デモは次のとおりです。

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"

int main(int argc,char *argv[]) {
    av_register_all();
    return 1;
}

gcc main.c -o main.o場合、エラーが発生します。undefined reference to 'av_register_all'

でビルド: gcc main.c -o main.o -lm -ld -lz -lavcodec -lavformat -lavutil、別のエラーが発生:/usr/bin/ld: cannot find -ld

どうすればこれを解決できますか?

4

5 に答える 5

12

extern "C" ブロック内にインクルードを置くとうまくいく場合があります。

extern "C"{
    #include <libavcodec/avcodec.h>
    #include <libavformat/avformat.h>
    #include <libswscale/swscale.h>
}
于 2014-06-28T12:38:44.917 に答える
3
gcc filename.c -o outputfilename -lavformat -lavcodec -lavutil  -lz -lm -lpthread -I'/usr/local/include' -lswresample

上記のコマンドは、適切にコンパイルするのに役立ちます。

于 2016-06-08T10:39:46.990 に答える
3

ここで述べた ように、ライブラリの順序は重要であるため、あなたの場合、うまくいけば次のようになります。

gcc main.c -o main.o -lavformat -lavcodec -lavutil  -lz -lm -lpthread
于 2014-01-23T11:50:45.063 に答える
1

このプロジェクトがサンプル コードをビルドする方法を見てください。

Makefile に従うのは非常に簡単です。

于 2012-09-20T12:15:39.590 に答える