作者QQ29 (我愛阿蓉)
看板C_Sharp
標題[問題] Dll 可以包DLL嗎?
時間Fri Jul 22 00:28:03 2011
大家好
我目前遇到一個奇怪的小問題~
假如說 我寫一個class library 叫 Foo.dll
但我內部有用到一個假如叫座sqlite.dll
我好心的把我寫的Foo.dll
給我的朋友使用
他compile OK 因為他根本看不到sqllite.dll的任何資訊
但他只要一invoke我開的API
就exception
我大概知道是因為我忘了給她sqlite.dll
但是這樣不就曝露出我內部偷用了sqllite.dll
我並不想讓人知道我偷使用別人的dll
這有辦法解決嗎?
還是這沒辦法一定要這樣做??
我理想的做法是我build出來的Foo.dll 別人直接拿來用就可以了
不需要傳給他我內部使用的其他DLL
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 188.223.83.48
1F:→ Anonymoux:dynamic load dll 之類的key words 07/22 00:40
2F:→ james732:有一個爛招是找Sqlite的原始碼加入專案後一起編...XD 07/22 00:46
3F:→ QQ29:1樓是說 在專案設定可以找到? 我記得之前小時候寫BCB有類似 07/22 02:29
4F:→ QQ29:東西~ 不過我實在不懂C#的dll算是static lib還是dynamic 07/22 02:29
5F:→ QQ29:我會問這問題是~ 我也許會漏給東西給對方 對方compile過 07/22 02:30
6F:→ QQ29:run time才發現壞掉 很麻煩@@ 07/22 02:30
7F:→ leicheong:不需要sqlite.dll也可以跑的話你加入這DLL是為了甚麼? 07/22 07:59
8F:→ leicheong:另外加入sqlite原始碼的方式除非你朋友的專案是 07/22 08:03
9F:→ leicheong:public domain, 否則需要承受法律風險. (見sqlite的 07/22 08:04
10F:→ leicheong:官網copyright頁關於需要Explicit License的部份. 07/22 08:05
11F:→ leicheong:因此不想出問題建議還是直接把sqlite.dll送過去. 07/22 08:05
12F:推 aecho:咦?所以包成了sqlite.dll就可以迴避license的問題嗎? 07/22 08:16
14F:推 aecho:我記得我包出來的foo.dll,還是要給sqlite.dll出來。 07/22 08:25
15F:→ aecho:sqlite的license是像LGPL那樣子嗎?包成dll就可以規避嗎? 07/22 08:26
16F:推 horngsh:leicheong大已經說會有法律問題, 要包進來請三思. 07/22 10:35
17F:推 rex1224:我記得假如你是用Using xxx.xxx那你就必須給你參照的dll 07/22 10:38
18F:→ agogoman:把sqlite.dll 轉成binary, 要用的時候寫出來, 再load來用 07/22 14:24
19F:推 leicheong:你可以直接在你的程式使用sqlite.dll, 但如果只抽取 07/22 16:23
20F:→ leicheong:一部份程式碼而不是用完整的sqlite.dll, 可能需要書面 07/22 16:24
21F:→ leicheong:授權... 07/22 16:24
22F:→ leicheong:畢竟sqlite內包括很多有專利的東西, 那些專利的持有人 07/22 16:27
23F:→ leicheong:只是同意豁免sqlite在版權頁內說明的情況的用途, 不包括 07/22 16:28
24F:→ leicheong:個別功能抽出來再開發或轉寫成其他程編語言. (除非你 07/22 16:31
25F:→ leicheong:要寫的東西是免費地公開給所有人使用的) 07/22 16:31
26F:推 aecho:感謝leicheong大的說明。所以如果修改了sqlite的內部實作, 07/22 20:33
27F:→ aecho:基於public domain的緣故,需要釋出自己的patch。 07/22 20:34
28F:→ QQ29:其實sqlite只是一個比方啦~只是我在想可不可以不要給 07/23 06:27
29F:→ QQ29:一次一個dll就包全部了? 07/23 06:28
30F:→ deuter:如果不考慮license問題,可以用 ILMerge 把多個dll合成一個 07/23 12:46
31F:推 horngsh:D大說的應是正解 07/23 17:23
32F:→ james732:我想問,如果把sqlite.dll改名叫core.dll這樣會侵權嗎? 07/23 18:08
33F:→ james732:(假如沒有文件或任何東西註明它是sqlite.dll) 07/23 18:08
34F:推 horngsh:這樣算是仿冒吧! 07/23 19:17
35F:推 tomex:用ILMerge能包dll,但SQLite.dll比較特別,包起來跑會有err 08/01 09:28