标题:动态连接库文件DLL的一个疑问
只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:5 
动态连接库文件DLL的一个疑问
刚才使用VC6 对于动态连接库文件DLL做了一个小的实验
我是使用模块定义文件 DEF + Cpp源代码的方法生成动态连接库文件DLL的
发现只要 Cpp源代码中的子程序定义的一样,则不管 模块定义文件 DEF 是否将其导出,生成的动态连接库文件DLL都是一样的,只是导入库文件(lib)会随着模块定义文件 DEF 的不同而发生变化。
极端的情况就是,不提供模块定义文件 DEF,也能产生动态连接库文件DLL,但是不产生导入库文件(lib)
这是否说明  Cpp源代码 中的所有语句都被编译到 动态连接库文件DLL 文件中
而 导入库文件(lib)仅仅是对于我们感兴趣的函数(在模块定义文件 DEF定义)给出了一个索引?
搜索更多相关主题的帖子: DLL 疑问 动态 文件 
2008-09-22 17:28
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
得分:0 
可以这么认为

try new catch
2008-09-22 18:59
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
回复 2# Arcticanimal 的帖子
我今天看到VC命令方式导出lib就是使用下面的语句

lib /DEF:mydll.def /OUT:mydll.lib
也就是这个导出库 mydll.lib 唯一由mydll.def 决定
所以我的理解应该就是正确的吧
不知道您说的 可以 是什么意思?
2008-09-23 00:26
lw3223
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-9-11
得分:0 
不对吧,dllexport也起到了相同的结果。

在很早的SDK编程中,在DEF声明导出函数是建议的方式,但是现在一般都是在H?CPP中使用宏就可以的了。
2008-09-23 12:59
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
回复 4# lw3223 的帖子
导出函数由两种方法

dllexport和DEF
我现在是针对 DEF 方法,当然不会在源代码中加 dllexport
2008-09-24 11:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-234578-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072403 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved