查看: 975|回复: 2
|
急: VC++2005的LIB/DLL
[复制链接]
|
|
我需要用VC++2005做一个DLL, 基本上这个DLL只是个wrapper, 在读了MSDN的资料和跟了它的SAMPLE后, 我很乱...
我的project必需可以SUPPORT VB6, VC, VC++(6和2005), MFC和JAVA, 我想我应该是要用:
regular DLL that statically links MFC (在create project 的时候选static library?)
或
regular DLL that dynamically links MFC (在create project 的时候选DLL?)
以上两种有什么不同? 我所看到的是dynamically links会create .dll 和 .lib 而statically 只有.lib. MSDN那边是说两者的不同是在于build的时候的file size, 和distribute的时候dynamically 需要把一些shared DLLs 加进去. 除此之外, 还有什么不同, 一般来说应该是用那一种?
还有个笨问题, 是不是.cpp就是C++, 就是有使用MFC?
很抱歉如果我的问题太简单, 因为很久没写PROGRAM了, 时间又很紧迫, 不想错在起步. |
|
|
|
|
|
|
|
发表于 10-10-2007 01:51 PM
|
显示全部楼层
简单来讲
static library (.lib, .a) , 跟dynamic library (.dll, .so) 的差别就是。。
如果,你用 static library 的话,linked 出来的 executable的binary 是包含了你的src 的 binary 在加上library 的 binary..
那么这个executable 就可以standalone了。。因为library的binary已经包含了。。
如果,你用 dynamic library 的话,出来的 executable只有你的 binary. 它放一个注册口在library function call那里。。
那么你这个executable 就不能standalone了。。因为library的binary不包含在executable的binary... 而是在.dll 或 .so 里。。 |
|
|
|
|
|
|
|
发表于 10-10-2007 01:56 PM
|
显示全部楼层
就打比方说
你的 sample.c compile 成 sample.o 或 sample.obj...
这个 sample.o(20kb) 若你link with static library somelib.a/somelib.lib(20kb) 出来是 sample.exe (40kb)
这个 sample.o(20kb) 若你link with dynamic library somelib.so/somelib.dll(20kb) 出来是 sample.exe (20kb),但sample.exe不能独立。。因为要用library时还是要靠 somelib.so/somelib.dll |
|
|
|
|
|
|
| |
本周最热论坛帖子
|