作者aecho (星空下的鮪魚)
看板C_and_CPP
標題Re: [問題] 到底lib是什麼呢?
時間Thu Apr 30 10:05:57 2009
※ 引述《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