作者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
1F:推 QQ29:请教一下 dll在编译的时候真的需要嘛? 我遇到的都是编完再摆 04/30 16:36
2F:→ QQ29:到exe的位置就可以了? 04/30 16:36
3F:推 littleshan:你说的是 dynamic loading / dynamic linking 04/30 17:01
4F:→ littleshan:而不是 dynamic linking / static linking 的不同 04/30 17:01
5F:→ sunneo:编译的时候需要的倒是dll的interface,如header 04/30 18:50
6F:推 QQ29:little大 你说的"你" 是说我还是原波@@ 不太了解 04/30 20:19
7F:推 littleshan:我指这篇原po 04/30 21:08
8F:→ tinlans:我很少用 MS 的编译环境,但印象中编译期至少要 .LIB,如 05/01 14:43
9F:→ tinlans:果你用的是 dynamic "linking" 的话。 05/01 14:44
10F:→ tinlans:上上行打错,不是编译期是连结期。 05/01 14:44
11F:→ tinlans:不管动态静态,如果不是 dynamic loading 印象都要 .lib 05/01 14:45