gpt4 book ai didi

makefile - 自己的 C++ 项目的 FFMPEG 库使用

转载 作者:行者123 更新时间:2023-12-04 22:46:12 24 4
gpt4 key购买 nike

我想使用 FFMPEG 创建自己的项目来构建播放器,但是创建一个包含 ffmpeg 库的新文件似乎并不容易。我已经配置了 ffmpeg 并进行构建。

./configure

./make

ffmpeg hello world 程序 (myffmpeg.c):

#include <libavformat/avformat.h>
int main(int argc, char *argv[]) {
av_register_all();
return 0;
}

但它显示

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

当我尝试链接 allformats.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)

应该是我的 Makefile 知识不好,谁能给我一些关于如何调用 ffmpeg 库函数的提示?或者甚至如何修改 Makefile 来构建我自己的程序?谢谢!

*更新:可能是我的编译命令问题,是否是编译方式?

g++ myffmpeg.c

最佳答案

也许问题是c++正在装饰函数。因此,使用 C 编译器和 C++ 编译的相同函数在链接器中看起来是不同的。试试这个:

extern "C"
{
#include <libavformat/avformat.h>
}

此代码意味着您告诉编译器不要修饰该文件中的函数。

关于makefile - 自己的 C++ 项目的 FFMPEG 库使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com