[問題] Dll 可以包DLL嗎?

看板C_Sharp (C#)作者 (我愛阿蓉)時間13年前 (2011/07/22 00:28), 編輯推噓10(10025)
留言35則, 10人參與, 最新討論串1/1
大家好 我目前遇到一個奇怪的小問題~ 假如說 我寫一個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

07/22 00:40, , 1F
dynamic load dll 之類的key words
07/22 00:40, 1F

07/22 00:46, , 2F
有一個爛招是找Sqlite的原始碼加入專案後一起編...XD
07/22 00:46, 2F

07/22 02:29, , 3F
1樓是說 在專案設定可以找到? 我記得之前小時候寫BCB有類似
07/22 02:29, 3F

07/22 02:29, , 4F
東西~ 不過我實在不懂C#的dll算是static lib還是dynamic
07/22 02:29, 4F

07/22 02:30, , 5F
我會問這問題是~ 我也許會漏給東西給對方 對方compile過
07/22 02:30, 5F

07/22 02:30, , 6F
run time才發現壞掉 很麻煩@@
07/22 02:30, 6F

07/22 07:59, , 7F
不需要sqlite.dll也可以跑的話你加入這DLL是為了甚麼?
07/22 07:59, 7F

07/22 08:03, , 8F
另外加入sqlite原始碼的方式除非你朋友的專案是
07/22 08:03, 8F

07/22 08:04, , 9F
public domain, 否則需要承受法律風險. (見sqlite的
07/22 08:04, 9F

07/22 08:05, , 10F
官網copyright頁關於需要Explicit License的部份.
07/22 08:05, 10F

07/22 08:05, , 11F
因此不想出問題建議還是直接把sqlite.dll送過去.
07/22 08:05, 11F

07/22 08:16, , 12F
咦?所以包成了sqlite.dll就可以迴避license的問題嗎?
07/22 08:16, 12F

07/22 08:22, , 13F

07/22 08:25, , 14F
我記得我包出來的foo.dll,還是要給sqlite.dll出來。
07/22 08:25, 14F

07/22 08:26, , 15F
sqlite的license是像LGPL那樣子嗎?包成dll就可以規避嗎?
07/22 08:26, 15F

07/22 10:35, , 16F
leicheong大已經說會有法律問題, 要包進來請三思.
07/22 10:35, 16F

07/22 10:38, , 17F
我記得假如你是用Using xxx.xxx那你就必須給你參照的dll
07/22 10:38, 17F

07/22 14:24, , 18F
把sqlite.dll 轉成binary, 要用的時候寫出來, 再load來用
07/22 14:24, 18F

07/22 16:23, , 19F
你可以直接在你的程式使用sqlite.dll, 但如果只抽取
07/22 16:23, 19F

07/22 16:24, , 20F
一部份程式碼而不是用完整的sqlite.dll, 可能需要書面
07/22 16:24, 20F

07/22 16:24, , 21F
授權...
07/22 16:24, 21F

07/22 16:27, , 22F
畢竟sqlite內包括很多有專利的東西, 那些專利的持有人
07/22 16:27, 22F

07/22 16:28, , 23F
只是同意豁免sqlite在版權頁內說明的情況的用途, 不包括
07/22 16:28, 23F

07/22 16:31, , 24F
個別功能抽出來再開發或轉寫成其他程編語言. (除非你
07/22 16:31, 24F

07/22 16:31, , 25F
要寫的東西是免費地公開給所有人使用的)
07/22 16:31, 25F

07/22 20:33, , 26F
感謝leicheong大的說明。所以如果修改了sqlite的內部實作,
07/22 20:33, 26F

07/22 20:34, , 27F
基於public domain的緣故,需要釋出自己的patch。
07/22 20:34, 27F

07/23 06:27, , 28F
其實sqlite只是一個比方啦~只是我在想可不可以不要給
07/23 06:27, 28F

07/23 06:28, , 29F
一次一個dll就包全部了?
07/23 06:28, 29F

07/23 12:46, , 30F
如果不考慮license問題,可以用 ILMerge 把多個dll合成一個
07/23 12:46, 30F

07/23 17:23, , 31F
D大說的應是正解
07/23 17:23, 31F

07/23 18:08, , 32F
我想問,如果把sqlite.dll改名叫core.dll這樣會侵權嗎?
07/23 18:08, 32F

07/23 18:08, , 33F
(假如沒有文件或任何東西註明它是sqlite.dll)
07/23 18:08, 33F

07/23 19:17, , 34F
這樣算是仿冒吧!
07/23 19:17, 34F

08/01 09:28, , 35F
用ILMerge能包dll,但SQLite.dll比較特別,包起來跑會有err
08/01 09:28, 35F
文章代碼(AID): #1EA5EMnr (C_Sharp)
文章代碼(AID): #1EA5EMnr (C_Sharp)