无法链接 FFmpeg 库

2023-12-28

我尝试构建这个,但总是出现链接时错误。

#include <libavutil/log.h>    
int main(int argc, char *argv[])
{
    ::av_log_set_flags(AV_LOG_SKIP_REPEATED);
    return 0;
}

我的发行版是 Debian GNU/Linux 8 (jessie)。 FFmpeg是我自己搭建的,配置命令是...

$ ./configure --prefix=/usr/local --disable-static --enable-shared \
> --extra-ldflags='-Wl,-rpath=/usr/local/lib'

链接错误如下。

$ g++ foo.cpp -D__STDC_CONSTANT_MACROS -Wall \
> -Wl,-rpath=/usr/local/lib \
> $(pkg-config --cflags --libs libavutil)
/tmp/ccKzgEFb.o: In function `main':
foo.cpp:(.text+0x17): undefined reference to `av_log_set_flags(int)'
collect2: error: ld returned 1 exit status

其中输出pkg-config is...

$ pkg-config --cflags --libs libavutil
-I/usr/local/include -L/usr/local/lib -lavutil

The objdump显示共享对象 libavutil.so 确实有av_log_set_flogs inside.

$ objdump --dynamic-syms /usr/local/lib/libavutil.so | grep 'av_log_set_flags'
000260f0 g    DF .text  0000000a  LIBAVUTIL_54 av_log_set_flags

请注意,g++用于构建上述应用程序的命令有一个链接器选项-Wl,-rpath=/usr/local/lib,尽管它仍然不起作用。另外,我尝试过监控inotifywait如果调用发行版提供的其他版本。它们不是,并且在执行期间被打开的那个g++是 /usr/local/lib/libavutil.so。

Summary:

  1. /usr/local/lib/libavutil.so 确实有该符号。

  2. -rpath用于强制链接共享库。

  3. 为什么会出现链接时错误? T_T

任何建议或信息将不胜感激!谢谢!

REEDIT: ffplay工作正常并且ldd显示它使用/usr/local/lib/libavutil.so。因此,这些库似乎没有损坏,问题变成了如何构建我自己的代码来使用这些库。


这也让我困惑了一段时间。我设法用谷歌搜索到这个:http://soledadpenades.com/posts/2009/linking-with-ffmpegs-libav/ http://soledadpenades.com/posts/2009/linking-with-ffmpegs-libav/

事实证明FFMPEG不要制作他们的头文件C++ aware.

这是修复方法:

extern "C"
{
#include <libavutil/log.h>
}

int main(int argc, char *argv[])
{
    ::av_log_set_flags(AV_LOG_SKIP_REPEATED);
    return 0;
}

你需要包裹所有ffmpeg标头包含extern "C"连锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法链接 FFmpeg 库 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 为什么极端下派生类(多重虚拟继承)的大小包括超类成员大小的两倍?

    include
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 我可以使用 moq Mock 来模拟类而不是接口吗?

    正在经历https github com Moq moq4 wiki Quickstart https github com Moq moq4 wiki Quickstart 我看到它 Mock 一个接口 我的遗留代码中有一个没有接口的类
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • C# 中的合并运算符?

    我想我记得看到过类似的东西 三元运算符 http msdn microsoft com en us library ty67wk28 28VS 80 29 aspx在 C 中 它只有两部分 如果变量值不为空 则返回变量值 如果为空 则返回默
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData

随机推荐

  • 按值传递 vs 按引用传递(两者之间内存空间分配的差异)

    在 C 中 我们使用引用传递 我们引用从参数传递到函数参数的任何地址 这本质上是一个指针 对吗 因此 虽然它们本质上是相同的东西 别名等等 但指针不是也需要内存空间吗 因此 无论我们在参数函数中拥有什么 都不应该让我们调用 B 指向所传递的
  • 多维数组符号之间的差异(object[][] 和 object[])

    我想知道在 C 中定义多维数组的两种方法有什么区别 您可以使用object and object 处理多维数组 功能上有区别吗 The object 是数组数组的表示法 第二个object 是一个二维数组 主要区别是第一个可以包含不同长度的
  • angularJS ng-model 输入类型号到 rootScope 未更新

    我的输入类型编号设置为
  • C# Decimal.GetHashCode() 和 Double.GetHashCode() 相等

    为什么会这样17m GetHashCode 17d GetHashCode m 十进制 d 双精度 另外 正如预期的那样17f GetHashCode 17d GetHashCode f 浮点数 对于 net3 5 和 net4 0 来说似
  • CSS悬停图像位置更改

    我确信这是超级愚蠢的事情 但现在我已经被困了一段时间 所以 我在网站上有图像 我希望它们在悬停时稍微移动 所以我在 HTML 中有 a href someaddress img class thumb src somefile a 在 CS
  • Dart SDK未配置

    我安装了 Flutter 并设置了 Android Studio 然后我在 GitHub 上克隆了一个 flutter 的示例 https github com flutter flutter https github com flutte
  • Linux 中的 Qt 线程问题

    我在我的项目中使用 Qt 进行开发已经有一段时间了 我们开始转向更加面向线程的设计 在将一些 GL 渲染小部件移动到其他线程后 我发现了一些非常奇怪的行为 看起来 如果 GL Widget 在接受用户输入的小部件 例如 QTextEdit
  • Android:如何加载PDF?

    有没有办法从浏览器或 WebView 中的 Asset URL 或任何其他方式加载 PDF 文件 目前还没有本地方法可以做到这一点 但是 您可以编写自己的 pdf 查看器活动 另外 请查看复制Go阅读器 http www cerience
  • 在 git 交互式变基期间添加了新文件,变基中止,新文件丢失

    我之前在几个节点上提交了 git rebase i 我添加了一些我打算添加到该提交中的新文件 看起来我在错误的节点上 所以我立即执行了 git rebase abort 这些新文件现在完全消失了 在引用日志中 看起来像是发出了删除命令 删除
  • Telegram markdown 语法:粗体 * 和 * 斜体? (2018年9月)

    通过查看Telegram 的 Markdown 语法 Wiki 页面 https sourceforge net p telegram wiki markdown syntax 创建文本应该相对容易粗体和斜体 在那里 它说 this is
  • Vuex Store 模块访问状态

    我想知道如何从另一个文件访问模块存储 状态 到目前为止 这是我的代码 store index js import Vuex from vuex import categories from modules categories Vue us
  • 允许在子命令后使用 argparse 全局标志

    我正在使用 argparse 构建带有子命令的命令 mycommand GLOBAL FLAGS 子命令 FLAGS 我希望全局标志无论在子命令之前还是之后都可以工作 有没有一种干净的方法来做到这一点而不涉及重复代码 例如 parser a
  • 如何更改 Material UI 自动完成弹出窗口的宽度

    当使用Select https material ui com api select 在 Material UI 中 有一个名为 autoWidth 的道具 它设置弹出窗口的宽度以匹配菜单内项目的宽度 是否有类似的选项自动完成 https
  • 基于骨骼运动的 Kinect 3D 手势识别 - 存在哪些库?

    Kinect 有哪些手势识别库 如果有 现在我正在使用 OpenNI 记录骨骼运动 但不确定如何从该运动到触发离散动作 我的问题可能像姿势检测一样简单 但也可能像基于时间的运动一样复杂 即检测他们何时将手绕圈移动 具体取决于其难度 我见过的
  • JavaScript:将 Json 数据数组更改为新格式

    我正在尝试使用需要以多种方式进行更改的 json 数据 我当前的json数据如下 file1 function1 calls 105 4 file file2 function function5 106 4 file file2 func
  • 当应用程序的部署目标设置为 6.0 或 6.1 时,Xcode 6 错误加载 3x 图像

    我在 xcode 的界面生成器中的故事板 或 xib 中构建 UI 时遇到此问题 将图像 在资源目录中具有相同名称 分配给 Interface Builder 中的图像视图后 xcode 会加载3x图像文件 而不是运行 ios8 的任何非
  • 包含 Vue.js v-if 和 v-for 指令的 HTML 标签在加载时闪烁

    我使用 Vue js 将数据发送到一个基本且非常简单的 API 该 API 通过电子邮件地址订阅时事通讯via下面的表格并显示一些消息 状态和错误 我特别使用指令 v if 和 v for 来显示错误和两条消息 问题是 当页面加载时 这两个
  • 如何使用ArrayList.addAll()?

    我想填写一个ArrayList与这些字符 等 我怎样才能做到这一点 而不必添加每个字符arrayList add 集合 addAll http docs oracle com javase 6 docs api java util Coll
  • Android 中未调用 WebView 方法

    我的 Web 视图没有调用 javascript 函数 它返回如下警告 任何人都可以建议如何消除以下警告 07 30 10 15 44 031 W webview proxy 3770 java lang Throwable Warning
  • 无法链接 FFmpeg 库

    我尝试构建这个 但总是出现链接时错误 include