C++项目中ffmpeg的CMake配置

2023-11-24

我已经使用 Homebrew 安装了 ffmpeg(版本 4),并且尝试在 C++ 项目中使用各种 ffmpeg 库,但在链接过程中遇到多个错误。

Undefined symbols for architecture x86_64:
  "_av_free", referenced from:
      _main in main.cpp.o
  "_av_packet_alloc", referenced from:
      _main in main.cpp.o
  "_av_parser_init", referenced from:
And so on ... 

我已包含以下库

extern "C" {
    #include <libavutil/frame.h>
    #include <libavutil/mem.h>
    #include <libavcodec/avcodec.h>
}

但这仍然行不通。我想我可能错过了一些东西CMakeLists.txt文件,目前看起来像这样:

cmake_minimum_required(VERSION 2.6)
project(decode_encode)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")

add_executable(decode_encode main.cpp)

我很可能需要指定额外的链接标志,但是有没有更好的方法来处理链接部分CMakeLists.txt file?


正如评论中提到的,PkgConfig 可用于更方便地链接库。在 CMake 3.17 中,这会链接所有 libav 库:

cmake_minimum_required(VERSION 3.17)

project(Foo)

find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET
    libavdevice
    libavfilter
    libavformat
    libavcodec
    libswresample
    libswscale
    libavutil
)

add_executable(${PROJECT_NAME}
    main.cpp
)

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

C++项目中ffmpeg的CMake配置 的相关文章

  • 如何引用 .net 可执行文件中的类?

    IL 反汇编程序显示了我想在项目中使用的 Net 可执行文件中的类 我如何使用我自己项目中的这些类 从 Visual Studio 上的项目添加对该可执行文件的引用 您应该有权访问它定义的公共类 可执行文件是一个像任何其他程序集一样的程序集
  • 为什么我需要显式编写“auto”关键字?

    我正在从 C 98 转向 C 11 并且已经熟悉了auto关键词 我想知道为什么我们需要明确声明auto编译器是否能够自动推导类型 我知道 C 是一种强类型语言 这是一条规则 但如果不显式声明变量就不可能实现相同的结果auto 放弃显式的a
  • 不同翻译单元中字符串文字的内存地址是否相同?

    假设我们有以下 cpp 文件 include
  • 如何在 ASP.Net Core 6 Web Api 中依赖注入 Microsoft Graph 客户端

    我正在尝试使用 ASP Net Core 6 设置 Web api 以便用户可以到达我的端点 然后我使用特权帐户在 Teams 中执行一些工作 我认为我没有正确连接 DI 部分 因为在向 Teams 发出请求时出现以下错误 MsalUiRe
  • 忽略父进程中的信号

    我正在尝试实现一个 shell 程序 我希望 shell 程序忽略 SIG INT ctrl c 但在我的程序中 子进程也会忽略 SIG INT 信号 但它不应该这样做 因为 exec 应该将子进程带到另一个程序 并且该程序默认情况下应该处
  • 合并多边形的高效算法

    我有一个多边形列表 在这个列表中 一些多边形重叠 或者接触其他多边形 我的任务是合并所有相互重叠或接触的多边形 我有一个union执行此操作的方法 做到这一点最有效的方法是什么 我目前能想到的是循环遍历多边形列表 检查合并列表以查看该多边形
  • 在“delete this;”语句期间发生了什么?

    请考虑以下代码 class foo public foo foo void done delete this private int x 以下两个选项中发生了什么 并且有效吗 选项1 void main foo a new foo a gt
  • std::string substr 方法问题

    你好 我正在写这个方法 我希望它从给定缓冲区中提取给定位置的一部分 我有一个像这样的字符串something one something two我想要得到 一个 这是我的想法 static std string Utils getHeade
  • 安全移动 C++ 对象

    我听到过一些警告 不要通过以下方式将对象运送到另一个内存位置memcpy 但不知道具体原因 除非它包含的成员做了依赖于内存位置的棘手事情 否则这应该是完全安全的 或者不是 编辑 预期的用例是像这样的数据结构vector 它存储对象 不是po
  • 使用 itextSharp 5.3.3 对 Pdf 文档进行数字签名和验证

    我正在尝试使用 iTextSharp 5 3 3 在服务器 c 上进行数字签名和验证 pdf 文档 我使用 DigiSign 在线工具 生成了 Pfx 文件 然后使用 Windows 生成证书 cer 文件
  • 检查字符串中是否存在所有字符值

    我目前正在做这项任务 但我被困住了 目标是读取文件并查找文件中的字符串中是否存在这些字符值 我必须将文件中的字符串与作为参数放入的另一个字符串进行比较 但是 只要每个字符值位于文件中的字符串中 那么它就 匹配 示例 输入和输出 a out
  • 从 ASP.NET Web API 返回 HTML

    如何从 ASP NET MVC Web API 控制器返回 HTML 我尝试了下面的代码 但由于未定义 Response Write 而出现编译错误 public class MyController ApiController HttpP
  • 在 C++ 中运行 python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个用 C 编写的应用程序和一个测试系统 也是用 C 编写的 测试系统非常复杂并且很难改变 我只想做一些小的改变 我的班级是这样的
  • 使用智能指针在大型对象集合中创建多个索引

    我正在为一个大型对象集合创建多个索引 即使用不同的键 对象可以改变 集合可以缩小和增长 到目前为止我的想法 保留某种指向对象的指针的多个集合 使用set代替map以获得更好的封装 使用 unordered set 可以很好地扩展大型数据集
  • 以编程方式将 UserControl 从 ContentControl 移动到另一个 ContentControl

    在 WPF 应用程序中 我想在代码中将 UserControl 从 ContentControl 移动到另一个控件 myContentControl2 Content myUserControl 在这种情况下我得到一个错误 指定的元素已经是
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • 您可以从 AuthorizeAttribute 返回 HTTP 响应而不引发异常吗?

    我在各种控制器上使用 AuthorizeAttribute 可能需要根据请求本身的某些属性返回 403 或 429 请求过多 我完全在自定义 OnAuthorization 实现中实现了它 然后在必要时抛出一个带有适当响应代码的新 Http
  • 编写一个转储屏幕像素的 RDP 客户端

    我想在中实现 RDP 客户端C 它能够获取屏幕所有像素的颜色值并将它们转储到文件中 我知道这在概念上与 RDP 的工作方式不同 但我的应用程序需要它 我正在尝试利用freerdp https github com FreeRDP FreeR
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe

随机推荐

  • 如何手动计算线性回归中 t 统计量的 p 值

    我对自由度为 178 的双尾 t 检验进行了线性回归 这summary函数为我的两个 t 值提供了两个 p 值 t value Pr gt t 5 06 1 04e 06 10 09 lt 2e 16 F statistic 101 8 o
  • Minecraft forge 不加载纹理

    我正在尝试自学 java 语法并使用 Minecraft 作为深入研究的平台 但我遇到了问题 因为我的纹理都没有被加载 就此而言 我的本地化也不是 这是我的块的代码 package net richbaird testtutorial bl
  • 元组到字符串

    我有一个元组 tst name u bob 21 name u john 28 True 我想将它转换为字符串 print tst2 name u bob 21 name u john 28 True 有什么好的方法可以做到这一点 Than
  • 如何在Matlab中使用libsvm?

    我是 matlab 新手 不知道如何使用 libsvm 是否有任何示例代码可以使用 SVM 对某些数据 具有 2 个特征 进行分类 然后将结果可视化 使用内核 RBF 多项式和 Sigmoid 怎么样 我在 libsvm 包中看到了该自述文
  • 帮助理解返回单例的类方法[重复]

    这个问题在这里已经有答案了 有人可以帮我理解以下方法在做什么吗 Game shared static Game sharedSingleton synchronized self if sharedSingleton sharedSingl
  • 如何使用方向键在列表视图行及其后代之间导航切换(Google-TV 支持)

    我有一个列表视图 每个列表项内都有一个图像视图 当用户单击该图像视图时 它会弹出一个菜单 它在带有触摸屏的普通 Android 设备上运行良好 但现在我想支持google tv 哪个应用程序应该由方向键控制 当我使用方向键浏览列表视图时 只
  • Oracle SQL查询:根据时间检索每组的最新值[重复]

    这个问题在这里已经有答案了 我在 Oracle 数据库中有下表 id date quantity 1 2010 01 04 11 00 152 2 2010 01 04 11 00 210 1 2010 01 04 10 45 132 2
  • 如何在不使用游标的情况下计算 SQL 中的运行总计?

    为了简洁起见 我省略了临时表中的所有游标设置和 SELECT 基本上 此代码计算每个交易的所有交易的运行余额 WHILE fetch status 0 BEGIN set balance balance amount insert into
  • 在将可选参数传递给另一个可选参数之前是否有必要检查它?

    我有以下关于可选参数的使用的问题 假设我有以下例程aaa模块中定义m aaa MODULE m aaa SUBROUTINE aaa a b INTEGER a INTEGER OPTIONAL b END SUBROUTINE END M
  • C# 实体框架 4 公共语言运行时检测到无效程序错误?

    如何调试 修复 公共语言运行时检测到无效程序 错误 到底是什么意思呢 我有一个 C MVC 2 Web 应用程序 可以部署到驻留在同一 IIS 7 5 Web 服务器 x64 上的两个网站 一个是实时站点 使用发布配置部署 第二个是测试站点
  • PHP move_uploaded_file() 错误?

    我使用以下代码 它成功地将文件上传到我的本地计算机上 它在我的本地计算机上显示 已成功上传 Upload file moved move uploaded file FILES file tmp name images myFile txt
  • 在 pgadmin iii 中导入 .sql 文件

    我想在 PostgreSQL 中导入一个 sql 文件 我正在使用 pgadmin iii 我在 phpmyadmin 中创建了一个 sql 文件 现在我想在 pgadmin iii 中导入相同的文件 我正在执行以下操作 但它对我不起作用
  • AWS CDK 子网选择

    我正在使用 AWS CDK 创建负载均衡器 我对CloudFormation很熟悉 在创建负载均衡器期间 我想给出如下子网 LB Type AWS ElasticLoadBalancingV2 LoadBalancer Properties
  • iOS 中的裁剪视频在视频周围看到奇怪的绿线

    大家好 我正在裁剪 iPhone 上相机拍摄的视频 然后裁剪并像这样回放 然而 当我这样做时 我在视频的底部和右侧周围出现了一条奇怪的绿线 不知道为什么会发生这种情况或如何解决它 这是我的裁剪方式 UIImageOrientation ge
  • 联合类型的部分键作为打字稿中对象的键

    我想使用联合类型的键作为打字稿中对象的键 type EnumType a1 a2 const object key in EnumType string a1 test 在这种情况下 我什至必须添加 a2 作为对象中的键 有没有办法让它成为
  • 使用 Spring mvc 创建第一个 Hello world 应用程序时出错

    首先 我想为可能重复的主题道歉 但我找不到问题的答案 我今天开始使用 spring mvc 我的 hello world 应用程序有一些问题 任何人都可以帮助我使这个程序运行吗 因为我遵循了一些说明 但我不知道如何解决这个问题 This是我
  • 32 位进程可以在 64 位 Windows 操作系统上访问更多内存吗?

    据我了解 在没有 3GB 开关的 32 位 Windows 上 32 位进程只能访问 2 GB 内存 并且其中一些内存由于其自身的邪恶原因而被操作系统占用 这似乎与我的经验相符 因为我们有一个应用程序 当它达到 1 2 1 5 GB 左右的
  • 检查 [] 运算符

    Python中如何检查对象是否支持 操作 我想到了类似以下的事情 if supports obj print Supports 您不 检查支持 你只需使用它 try a obj whatever except TypeError whate
  • JAX-RS 接受图像作为输入

    相当长一段时间以来 我一直在开发 JAX RS Web 服务来满足我的开发需求 到目前为止我编写的所有方法都接受 java 字符串或原始类型作为输入 这种方法的一个例子 POST Path MyMethod Produces MediaTy
  • C++项目中ffmpeg的CMake配置

    我已经使用 Homebrew 安装了 ffmpeg 版本 4 并且尝试在 C 项目中使用各种 ffmpeg 库 但在链接过程中遇到多个错误 Undefined symbols for architecture x86 64 av free