看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 我沒有自己寫過lib或是dll : 而我一直有自以為對的一個觀念就是 : .h和.cpp .cpp可以換成lib : lib就是.cpp , 實作的包裝.... 但其實要我解釋 lib到底是什麼我也不知道 : 他先把CPP 作成lib 是把cpp檔案textfile 作了什麼事呢?? : 我試著google一下 看比較general解釋 都不太解釋我想問的這個部份 : 想請版友給點指點~~ 計概課本會告訴你, 純文字的程式碼經過 compile 以後變成 object file, 把一個或多個 object files 做 linking 之後就會變成 executable file。 static lib 其實就是很多 object files 的 archive, 也就是把一堆編譯出來的 .obj (或 .o)檔封在一個檔案裡, 這樣你在 linking 的時候只要指定一個 lib 檔而不需要指定一堆 objec files。 : 然而dll更是我完全沒碰過的東西 : 我只知道我執行程式時 要把該用的dll擺好 而dll在compile time是沒有關係的.. : 也是google了一下 知識+之類的 解釋的讓我更不懂了 : 有提到什麼許多程式共用的XXXXX (不知道是什麼...) : 那如果共用 不會造成race condition或是什麼之類的怪事情嘛? 共用 text section 並不會有什麼問題, 因為那個地方本來就不允許在 runtime 被寫入新值, 而且裡面的 code 一般會被編譯成 position independent code, 所以存取資料上也不會發生奇怪的問題。 : 一般寫程式 我就沒有碰過真的需要自己寫dll這件是 導致我真的對這一無所知 : 只知道她好像是run time程式會去跟他作某些事情.... : 請大家給一點正確的觀念好嘛..... : 是什麼必要 會需要去寫dll呢? 可以共用 text section 的意義當然就是省 memory, 另外一個就是為了彈性, 不過怎麼做到彈性這點就真的說來話長了, 建議你自己動手玩過 DLL 以後再來問進一步的問題。 物件導向的技術也能用在 DLL 上, 比方說 header 只有 base class, dervied classes 被實作在 DLL 內, 設計核心部分的人只需要以多型的方式利用物件即可, 元件導向的程式開發模式也常會用這種技巧; 不過你想在 Windows 上玩這招可能還會遇上一些問題, 特別是跨 DLL 用 new/delete 可能會有事, 但現在講這些可能也太早了。 -- Ling-hua Tseng (uranus@tinlans.org) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://www.tinlans.org -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.115.183
VictorTom:小弟我才他google到的.dll共用應該只是解釋一般人使用上 04/30 03:03
VictorTom:.dll的運作看起來是共用的, 而不是code/binary的內容@@" 04/30 03:03
QQ29:請教一下 您說static lib 其實就是很多object files的archive 04/30 03:18
QQ29:意思是說不是一個.cpp變成一個lib而是可以全部變成一個lib? 04/30 03:19
QQ29:另外看了一下您的網頁....您六歲就開始接觸程式= =太神了吧 04/30 03:22
sunneo:tinlans等級頗高的 04/30 04:01
MOONRAKER:幾歲開始不重要啦 以前因為電腦沒什麼好玩 所以要玩電腦 04/30 04:42
MOONRAKER:就一定要寫程式 重點是後來怎樣 這可不是我在酸 04/30 04:43
MOONRAKER:我小時候也玩某種仿水果電腦 可是現在混得太爛所以沒啥 04/30 04:45
MOONRAKER:好講的 -_- 04/30 04:45
sunneo:我小時候也是用qbas/etbas寫了簡易的戰車遊戲 04/30 04:47
sunneo:不過程式碼醜斃了 全都擠在同一個bas 還goto了一堆 04/30 04:48
sunneo:最後就連維護都很懶了 04/30 04:48
sunneo:csse的`怎麼知道適不適合走程式這條路`的答案是維持的動力 04/30 04:50
sunneo:不過看最近新聞...國小作機器人 還有以前某個寫ga組合midi 04/30 04:52
sunneo:倒是蠻令人驚奇的... 04/30 04:52
sunneo:資料共用在nt以上應該都不會是預設 95/98才是 04/30 05:01
VictorTom:國小寫控制機器人那些似乎是有現成的套件的樣子喔@_@" 04/30 10:28
VictorTom:不過小小年紀就可以把邏輯/控制搞清楚實作出來也不簡單. 04/30 10:29
VictorTom:話說, QB裡不是本來很多地方就在goto的嗎?_? 04/30 10:29
MOONRAKER:QB有比較decent的function/sub了 ETBAS是GWBASIC那一期 04/30 10:54
MOONRAKER:的,沒有這些近代的program unit,不是goto就要靠gosub 04/30 10:54
VictorTom:啊對不起, 我搞錯了, 我說的應該是BASIC, 那個還可以自 04/30 13:13
VictorTom:己打行號: 10 xxxx 20 xxxx 30 xxxx 的那個Orz 04/30 13:14
tinlans:每個 .cpp 可以各自變成 .obj,這些 .obj 可收成一個 lib 05/01 14:46