2010-06-11 157 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