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

SFML not linking statically to openal32 (links statically to all other dependencies)

本文关键字:静态 链接 其他 依赖 openal32 SFML      更新时间:2023-10-16

我使用 CMake for MinGW 编译了 SFML。运行"mingw32-make install"后,一切都已构建和安装,没有错误。但是在运行示例时 - 乒乓.exe、声音.exe、声音捕获和 voip.exe.exe都取决于openal32.dll.

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

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

编辑:我刚刚遇到了这个线程 http://en.sfml-dev.org/forums/index.php?topic=262.0 它正在讨论完全相同的问题。我会认为(因为这是从 2008 年开始的)现在已经实施。还是仍然处于相同的情况?

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

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

他们使用的 OpenAL 实现是在 GNU 库通用公共许可证 (LGPL) 版本 2 下授权的。LGPL v2 要求:

如果将程序与库链接,

则必须向收件人提供完整的对象文件,以便他们可以在对库进行更改并重新编译库后将其与库重新链接。你必须向他们展示这些条款,以便他们知道自己的权利。

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

至于许可证的这一部分:

你必须向他们展示这些条款,以便他们知道自己的权利。

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

在以下条件下,您可以将openal32.dll与您的游戏一起分发:

例如,如果您分发库的副本,是否免费 或者收费,您必须向收件人授予我们给予的所有权利 你。 您必须确保他们也收到或可以获取源 法典。

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

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

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

  • OpenAL Soft:http://openal-soft.org/

当您通知用户 OpenAL 时,您还可以自愿归因您的游戏使用的其他开源库,例如 SFML。