SFML 未静态链接到 openal32(静态链接到所有其他依赖项)

2024-01-25

我使用 CMake for MinGW 编译了 SFML。运行“mingw32-make install”后,一切都已构建并安装,没有错误。但运行示例时 - pong.exe、sound.exe、sound-capture.exe 和 voip.exe 均依赖于openal32.dll.

我指定SFML_USE_STATIC_LIBS = true配置 CMake 时,示例可执行文件的所有其他依赖项仅依赖于本机 Windows dll。

谁能解释为什么它动态链接到 openal32 (但没有其他)?

Edit:我刚刚遇到这个线程http://en.sfml-dev.org/forums/index.php?topic=262.0 http://en.sfml-dev.org/forums/index.php?topic=262.0这正在讨论完全相同的问题。我本以为(因为这是 2008 年的事情)现在应该已经实施了。或者说现在还是同样的情况吗?

Edit 2:此处的回复http://en.sfml-dev.org/forums/index.php?topic=18119.0 http://en.sfml-dev.org/forums/index.php?topic=18119.0表示由于许可证的原因,OpenAL 必须动态链接。任何人都可以确认许可证是否允许使用可执行文件分发 openal32.dll 吗?


我不是律师(昨晚我也没有入住受欢迎的连锁酒店)。

The 他们正在使用的 OpenAL 实现 http://openal-soft.org/已获得许可GNU 库通用公共许可证 (LGPL),版本 2 http://repo.or.cz/w/openal-soft.git/blob/HEAD:/COPYING。 LGPL v2 要求:

如果将程序与库链接,则必须向接收者提供完整的目标文件,以便他们在对库进行更改并重新编译后可以将程序重新与库链接。您必须向他们展示这些条款,以便他们了解自己的权利。

允许用户将闭源游戏与修改后的 OpenAL 库重新链接的最简单方法是使该游戏链接动态地openal32.dll。这样,他们就可以简单地更换openal32.dll修改后的文件,并将其放在游戏可执行文件旁边。

对于这部分许可:

您必须向他们展示这些条款,以便他们了解自己的权利。

只需告知您的用户您的游戏使用 OpenAL,并以某种方式授予他们访问 LGPL v2 文本正文的权限。

您可以分发openal32.dll在您的游戏中,在以下条件下:

例如,如果您分发该库的副本,是否免费 或者付费后,您必须向收件人授予我们赋予的所有权利 你。您必须确保他们也收到或可以获得来源 代码。

只需告知您的用户您的游戏使用 OpenAL,并提供他们可以下载源代码的链接即可实现这一目标。

要告知您的用户他们对 OpenAL 的权利,您可以在游戏本身的“关于”页面或分发的游戏手册的前言/附录中进行操作。例如:

该游戏使用以下开源软件:

  • OpenAL 软件:http://openal-soft.org/ http://openal-soft.org/

当您告知 OpenAL 用户时,您还可以自愿注明您的游戏使用的其他开源库(例如 SFML)的归属。

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

SFML 未静态链接到 openal32(静态链接到所有其他依赖项) 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 按成员序列化

    我已经实现了template
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐