gpt4 book ai didi

gcc - 使用ffmpeg库编译报错

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

我已经下载并安装了 ffmpeg 库。我想用它来读取不同视频的单独帧并对其进行操作。为此,我尝试从这里开始学习一些教程:http://dranger.com/ffmpeg/tutorial01.html但是我无法编译我的 cpp 文件,因为我得到以下编译:

Undefined symbols for architecture x86_64:
"av_register_all()", referenced from:
_main in cc9zyUBe.o
_main in ccRz35d4.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

当我安装 ffmpeg 库时,我在 ./configure 步骤中使用了 arch=x86_64 选项。我使用 OS X Mountain Lion 10.8.2 和 gcc 4.2 编译器。有人知道这个错误的原因是什么吗?提前致谢。

更新:我已经尝试了许多不同的安装选项,包括静态库、共享库、有/没有 --arch=x86_64 选项。还用自制软件安装了它,结果保持不变。无法识别库。但是当我将 ffmpeg 二进制文件用作命令行工具时,它工作得很好。

最佳答案

最后,我成功地编译了我使用 ffmpeg 库的程序。

出于某种原因,我仍然无法使用 gcc 编译器编译它,但我可以使用 g++ 编译器进行编译。

安装静态库时,必须明确指定所有依赖项,并且这些库的链接顺序也很重要。所以这是最终编译我的程序的编译代码:

g++ readVideo.cc -o readVideo $(pkg-config --libs --cflags libavformat)

pkg-config 这是一个实用程序,它打印正确链接指定的 libavformat 库所需的所有标志和库。

另外值得一提的是,源文件已从 readVideo.C 重命名为 readVideo.cc,并且 #include 语句已使用 extern "C" 如下:

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

它是必需的,因为 ffmpeg 是一个 C 项目,如果您不明确声明它是 C 库,程序将无法使用 C++ 编译器进行编译。

如果您不想费心使用 pkg-config 来包含 ffmpeg 库的所有依赖项,您可以使用共享库而不是静态库来安装 ffmpeg。然后它将通过更简单的调用进行编译:

g++ readVideo.cc -o readVideo -lavformat

要安装共享库,需要在安装ffmpeg时将这2个选项添加到./configure程序中:

--disable-static --enable-shared

希望它能帮到一些人……

关于gcc - 使用ffmpeg库编译报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12903910/

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