我使用 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(使用前将#替换为@)