看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《QQ29 (我愛阿蓉)》之銘言: : 我沒有自己寫過lib或是dll : 而我一直有自以為對的一個觀念就是 : .h和.cpp .cpp可以換成lib : lib就是.cpp , 實作的包裝.... 但其實要我解釋 lib到底是什麼我也不知道 : 他先把CPP 作成lib 是把cpp檔案textfile 作了什麼事呢?? : 我試著google一下 看比較general解釋 都不太解釋我想問的這個部份 : 想請版友給點指點~~ : 然而dll更是我完全沒碰過的東西 : 我只知道我執行程式時 要把該用的dll擺好 而dll在compile time是沒有關係的.. : 也是google了一下 知識+之類的 解釋的讓我更不懂了 : 有提到什麼許多程式共用的XXXXX (不知道是什麼...) : 那如果共用 不會造成race condition或是什麼之類的怪事情嘛? : 一般寫程式 我就沒有碰過真的需要自己寫dll這件是 導致我真的對這一無所知 : 只知道她好像是run time程式會去跟他作某些事情.... : 請大家給一點正確的觀念好嘛..... : 是什麼必要 會需要去寫dll呢? : 謝謝各位 我所知道的是連結有靜態連結和動態連結 動態連結的話,需要的是.dll, 然後用LoadLibrary()和GetProcAddress()取的function pointer, 之後就可以用了。 麻煩在你必須知道這個function的參數, 而且要另外寫好幾個function pointer, 然後一個一個對應過去… 靜態連結的話,需要.h .lib .dll 編譯的時候,debug版的lib要對應到相對的.dll。release版的lib要對應到.dll 然後要include那份.h檔。 在VC下,就是要設定一下liker裡面的內容吧,把需要的.lib加上去 或是用#pragma comment(lib,"xxx.lib") 說會用到哪一個.lib 而.dll必須放在project能找的到的路徑下。 -- 或許人生是一段整合內在的自己 並尋求人間一點真情的過程吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.59.242
QQ29:請教一下 dll在編譯的時候真的需要嘛? 我遇到的都是編完再擺 04/30 16:36
QQ29:到exe的位置就可以了? 04/30 16:36
littleshan:你說的是 dynamic loading / dynamic linking 04/30 17:01
littleshan:而不是 dynamic linking / static linking 的不同 04/30 17:01
sunneo:編譯的時候需要的倒是dll的interface,如header 04/30 18:50
QQ29:little大 你說的"你" 是說我還是原波@@ 不太了解 04/30 20:19
littleshan:我指這篇原po 04/30 21:08
tinlans:我很少用 MS 的編譯環境,但印象中編譯期至少要 .LIB,如 05/01 14:43
tinlans:果你用的是 dynamic "linking" 的話。 05/01 14:44
tinlans:上上行打錯,不是編譯期是連結期。 05/01 14:44
tinlans:不管動態靜態,如果不是 dynamic loading 印象都要 .lib 05/01 14:45