SFML 不静态链接到 openal32(静态链接到所有其他依赖项)
SFML not linking statically to openal32 (links statically to all other dependencies)
我使用 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。
- 基于boost的程序的静态链接——zlib问题
- 使用gcc从静态链接的文件中查找可选符号
- 使用转换器提升 Python 问题 - 静态链接
- C++实用程序::转换在静态链接库中不起作用
- 将源中的 GLEW 与 cmake 静态链接
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- libavdevice 和 x11 的静态链接库应该以什么顺序链接?
- 静态链接启用 PIC 的库时出现链接器 PIC 错误
- 静态链接库时,收到链接器错误:找不到 -lgcc_s
- 静态链接 glibc & boost_python36 for Python extension
- 我可以在C++中配置静态链接吗?
- 协议缓冲区的静态链接会导致与现有符号冲突
- C++标准是否定义了结构中成员函数的函数内定义是否必须具有静态链接?
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 我可以加载与库静态链接的 dll 吗?
- 静态链接MSVC库,动态链接Qt
- C++:找不到静态链接
- OpenSSL AES仅适用于某些计算机,即使具有静态链接也是如此
- CURL 静态链接未解析的外部符号
- 如何强制Windows.h在Visual Studio中静态链接而不是动态链接?