FFMPEGを使って独自のプロジェクトを作成して、プレーヤーをビルドしたいと思いますが、ffmpegライブラリを組み込むために新しいファイルを作成するのは簡単ではないようです。私はffmpegを構成してビルドを行いました。自分のC++プロジェクトのFFMPEGライブラリの使用
./configure
./make
のffmpegのhello worldプログラム(myffmpeg.c):
#include <libavformat/avformat.h>
int main(int argc, char *argv[]) {
av_register_all();
return 0;
}
が、私はallformatsをリンクしようとすると、それは
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Undefined symbols for architecture x86_64:
"av_register_all()", referenced from:
_main in myffmpeg-61ec1b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation
を示しています。 oファイル内にav_register_all関数があります。私が得た:
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated Undefined symbols for architecture x86_64: "_av_register_input_format", referenced from: _register_all in allformats.o "_av_register_output_format", referenced from: _register_all in allformats.o "_avcodec_register_all", referenced from: _register_all in allformats.o "_ff_a64_muxer", referenced from: _register_all in allformats.o
...
"_ff_yuv4mpegpipe_muxer", referenced from: _register_all in allformats.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
誰かが私にffmpegのライブラリ関数を呼び出す方法についていくつかのヒントを与えることができるそれは、私の悪いMakefileの知識すべきですか?あるいは自分のプログラムをビルドするためにMakefileを変更する方法さえ?ありがとう!
*アップデート: 私のコンパイルコマンドの問題かもしれませんが、それはコンパイルの方法ですか?
g++ myffmpeg.c
Makefileを含むいくつかの例を見たい場合は、 'doc/examples'を参照してください。下の回答のようにヘッダーを折り返してください。 – aergistal