佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 975|回复: 2

急: VC++2005的LIB/DLL

[复制链接]
阿瓦 该用户已被删除
发表于 4-10-2007 03:40 PM | 显示全部楼层 |阅读模式
我需要用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了, 时间又很紧迫, 不想错在起步.
回复

使用道具 举报


ADVERTISEMENT

发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-9-2025 12:48 AM , Processed in 0.103235 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表