我想使用 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;
}
Run Code Online (Sandbox Code Playgroud)
但它显示
clang:警告:在 C++ 模式下将“c”输入视为“c++”,此行为已弃用
体系结构 x86_64 的未定义符号:
“av_register_all()”,引用自:
_main 在 myffmpeg-61ec1b.o
ld:找不到架构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用
当我尝试链接内部包含 av_register_all 函数的 allformats.o 文件时。我有:
clang:警告:在 C++ 模式下将“c”输入视为“c++”,此行为已弃用架构 x86_64 的未定义符号:“_av_register_input_format”,引用自:allformats.o 中的 _register_all “_av_register_output_format”,引用自:allformats 中的 _register_all .o "_avcodec_register_all",引用自:allformats.o 中的_register_all.o "_ff_a64_muxer",引用自:allformats.o 中的_register_all
...
“_ff_yuv4mpegpipe_muxer”,引用自:allformats.o ld中的_register_all:找不到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
这应该是我的 Makefile 知识不好,有人能给我一些关于如何调用 ffmpeg 库函数的提示吗?甚至如何修改 Makefile 来构建我自己的程序?谢谢!
*更新:可能是我的编译命令问题,是编译方式吗?
g++ myffmpeg.c
小智 5
也许问题在于 c++ 正在装饰函数。所以用 C 编译器和 C++ 编译的相同函数看起来与链接器不同。尝试这个:
extern "C"
{
#include <libavformat/avformat.h>
}
Run Code Online (Sandbox Code Playgroud)
这段代码意味着您告诉编译器不要装饰该文件中的函数。
| 归档时间: |
|
| 查看次数: |
3183 次 |
| 最近记录: |