看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《photon3108 (John)》之銘言: : 假設有兩個 Library, A 和 B, 要各自做成 DLL, : 而 B 的 Class2 會繼承到 A 的 Class1,在編譯 : 及聯結 B 的時候,請問一定要給 a.lib (做 : a.dll 時一起做出來的) 嗎? 需要放在一起 : 編譯及聯結 b.dll 時,所需資料除了 A 的 : Class1.h 之外,還會缺哪些資料,所以才需要 : a.lib 呢? B沒有定義class 1的底層, 所以需要a.lib (需要知道連結的方式) 當然也可以自行透過LoadLibrary來自行實作, 這樣不需要a.lib (但仍需要a.dll) 不過這是件麻煩的事情, 還是交給compiler/linker去弄就好了... : 原本以為,應該只需要 Header File 而已,僅只 : 有在引用 A 和 B 做成的 app.exe 才需要 a.lib : 及 b.lib,但好像不是這樣子。 : 謝謝。 : PS.同一個VC++。 header通常只定義簽名的方式, 不包含任何實作的內容 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.10.48
photon3108:class 1的底層是什麼呢?,我試著把A、B變成靜態連結時 01/02 23:22
photon3108:,只有用到Header File,這是動態連結特有的嗎? 01/02 23:23
WPC001:你自己都說靜態連結了... 不過真的只要header檔嘛? 01/03 00:33
photon3108:其實整個IDE我都設定到有點混亂了,不是很確定,但將 01/03 08:14
photon3108:A、B做成Static link library時,有觀察到B聯結或不聯 01/03 08:16
photon3108:結到A,好像都不會造成error or warning,不過library 01/03 08:17
photon3108: B有聯結時,檔案較大。 01/03 08:19
photon3108:推文第一行寫的靜態聯結,應該寫成static link library 01/03 08:21
photon3108:後來我把a.lib點開來看,看到class name, function 01/03 08:32
photon3108:name, 還有一些數字,這些寫的是dynamic link library 01/03 08:33
photon3108:對應的class位置和function位置嗎?,為什麼不把這些寫 01/03 08:35
photon3108:在a.dll裡面,而需另外放在a.lib呢?,linux的.so好像 01/03 08:38
photon3108:沒有另外的.lib,是不是就不必在做B的dll時引用a.dll呢 01/03 08:40