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

时间:2015-05-10 10:19:16

标签: c++ cmake sfml

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

我在配置CMake时指定了SFML_USE_STATIC_LIBS = true,示例可执行文件的所有其他依赖项仅在本机Windows 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吗?

1 个答案:

答案 0 :(得分:3)

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

OpenAL implementation they are using已根据GNU Library General Public License (LGPL), version 2获得许可。 LGPL v2要求:

  

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

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

关于这部分许可证:

  

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

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

您可以在以下条件下将游戏Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long Dim lr1 As Long, lr2 As Long Dim Delta As Variant'****************EDIT************ Dim wks1 As Worksheet, wks2 As Worksheet Dim rINT As Range Set rINT = Intersect(Target, Range("N:N")) If rINT Is Nothing Then Exit Sub Set wks1 = ActiveSheet Set wks2 = Worksheets("Charges") 'change to suit lr1 = wks1.Cells(Rows.Count, "N").End(xlUp).Row For i = 2 To lr1 Delta = wks1.Cells(i, "N").Value If Delta > 0.9 Then lr2 = wks2.Cells(Rows.Count, "A").End(xlUp).Row + 1 wks1.Cells(i, "N").EntireRow.Copy Destination:=wks2.Cells(lr2, "A") End If Next i MsgBox "Macro is Done, Thank you for waiting", vbInformation End Sub 分发:

  

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

只需告知您的用户您的游戏使用OpenAL,并提供指向他们可以下载源代码的位置的链接即可满足。

要告知您的用户他们对OpenAL的权利,您可以在"关于"游戏中的页面,或分布式游戏手册的前言/附录。例如:

  

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

     

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