2010-06-11 130 views
0

我们有一个使用Qt的商业Windows应用程序。Qt,LGPL,商业闭源应用程序

我的描述非常简单,因为我必须有一个明确的答案。

在编译的时候,我们使用Qt * .lib文件

我们有我们编译的结果是一个* .exe文件,我们包装成一个安装程序和船舶到客户端。这个* .exe文件取决于Qt中的* .DLL文件。

在运行时的Qt * .dll文件使用

我的问题是:

  1. 我可以合法地捆绑在我安装了Qt * .dll文件?
  2. 即使编译/链接依赖于Qt * .lib文件,我是否可以合法捆绑最终的* .exe文件?
+4

我投票结束这个问题作为题外话,因为**它是关于许可或法律问题**,而不是编程或软件开发。 [见这里](http://meta.stackoverflow.com/a/274964/1402846)了解更多信息,以及[帮助/话题]。 – 2015-06-04 23:48:40

回答

2

两者都是允许的。你应该特别注意LGPL 2.1的第6节。您必须允许对闭源应用程序进行私人修改和逆向工程。您可能需要选项6b,在您的情况下,这意味着用户可以安装修改的QT DLL。 IANAL。

+0

这是我没有得到 - 我怎么能允许切换QT DLL?如果它是一个错误修复,那很好,但是如果它们改变结构,并且“熔合”到我编译的应用程序中的* .lib文件的内容将需要更改?这听起来在技术上不可能。 – C172Programmer 2010-06-11 18:36:23

+1

如果程序“与作品的版本是接口兼容的,那么你的程序只需要修改QT DLL”。 – 2010-06-11 21:09:00

+0

这是有道理的。谢谢。 – C172Programmer 2010-06-11 21:23:33

0

1)是否可以合法将QT * .dll文件捆绑到我的安装程序中?

这是推荐的解决方案 - 它允许用户轻松升级到更高版本的Qt。

2)可我在法律上捆绑我最后的* .EXE文件 即使它的编译/链接 取决于QT * .lib文件

你的意思是,你使用Qt的存根的.libs到建立一个DLL版本,或者你是静态链接一个EXE(不需要Qt DLLs)? 它必须可以重新链接Qt。如果你是静态链接Qt,这可能意味着你必须使你的应用程序的对象或原始库版本可用(取决于你的操作系统)

+1

我的意思是存根,当然,最终的EXE将依赖于在运行时找到QT DLL。 – C172Programmer 2010-06-11 19:16:42

+0

然后就是这样。一个“黑客”可以入侵QtGui.dll,按照他的意愿进行编辑,将其替换到您的应用程序文件夹并使用您的应用程序与他的DLL! LGPL允许这样做。只要你使用stub .LIBs,你就不会静态链接Qt。 – 2012-10-25 02:18:25