导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View
  • VC++技术资源

关于类的导出问题

babysloth 2001-03-03 05:10:00
类从DLL里导出,在EXE使用的时候,一般强调版本要一致。

如果修改了DLL里的类而EXE保持不变,什么情况下会出问题,什么情况下没有任何问题?
比如下列情况:
1.导出类全是纯虚函数。COM似乎是这么要求的,但不知道这样有什么特别的好处.
2.只导出类成员函数。
3.只导出静态成员函数和静态成员变量。
4.等您来告诉我了。

这里的修改也请大家说一下,怎么样的修改没问题?添加成员变量?添加成员函数?或者是其他?

总之任何想法,任何意见,请发表。
...全文
469 点赞 收藏 24
写回复
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
w8zz 2001-03-08
偶不要分的,那50分。。。
你要是用DLL的导出lib来引用dll的东西,就别指望你描述的情况可以正常
不过可以试试@1,@2,@3,@4........不知道这些。。
<
回复人:babysloth(小懒虫虫) (2001-3-6 16:11:00) 得0分
您说得对,我是在想接口不固定是否还有方法?
如果全部用静态的?
 回复人:babysloth(小懒虫虫) (2001-3-6 16:13:00) 得0分
当然只变多不变少
还有GOODHOPE,你这个用DELPHI的也来吵,一分都不给!
 回复人:Kevin_qing(Kevin) (2001-3-7 10:46:00) 得50分
不固定可以使用类似Com的方法,得到增加的接口指针,应该不会有问题
但是如果属性增加了会非法的,所以一般应该有一个保留的属性域

>
回复
Kevin_qing 2001-03-07
不固定可以使用类似Com的方法,得到增加的接口指针,应该不会有问题
但是如果属性增加了会非法的,所以一般应该有一个保留的属性域
回复
babysloth 2001-03-07
对,差不多了,到此为止了吧?如果没什么其他意见,晚上就来加分。看来是该用COM了,呵呵。
回复
babysloth 2001-03-06
当然只变多不变少
还有GOODHOPE,你这个用DELPHI的也来吵,一分都不给!
回复
babysloth 2001-03-06
您说得对,我是在想接口不固定是否还有方法?
如果全部用静态的?
回复
Kevin_qing 2001-03-06
只要所有成员函数为虚就不会有问题
最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。

这样替换dll后exe根本不需要改变

前提是接口固定
回复
Kevin_qing 2001-03-06
只要所有成员函数为虚就不会有问题
最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。

这样替换dll后exe根本不需要改变
回复
GoodHope 2001-03-06
大家不要上当,这家伙用C++Builder的!^_^
回复
GoodHope 2001-03-06
我在QQ上跟你说了多少,还不满意?7456。把分给点我。
回复
babysloth 2001-03-06
没有人再来啦?200分大家分了吧.
回复
babysloth 2001-03-05
谢谢w8zz啦,只要注意更新lib,当然没有任何问题。
我关心的是如何不更新lib而使得exe不会出问题,当然DLL里绝对保证只是扩充了。
回复
w8zz 2001-03-05
1:在这时最好所有的成员都是protected,该动通过接口函数来该
2:dll的class一变,马上把ap引用的Lib也update
3:注意虚函数,特别是析构函数
4:VC6似有bug,装上SP3后可能会好一点,不行的话,用VC5 make DLL project吧
回复
babysloth 2001-03-04
除了COM诸位就没有其他办法了?
呵呵,看来200分给大家分了算了.
回复
babysloth 2001-03-04
那改动静态的成员应该没问题吧?
回复
在Dll中可以导出函数,变量和类,导出类时如果成员变量有了修改,比如类型改变,或添加新的成员变量和删除成员变量,Exe在调用时会出问题

修改导出函数的内容,只要名称,返回值,参数类型和个数不改变,Exe调用就没有问题

回复
babysloth 2001-03-04
偶不晓得,侬晓得?呵呵。
回复
yiwei 2001-03-04
嘿嘿,偶不晓得……
回复
babysloth 2001-03-04
传说中VC版的高手们呢?
回复
yuanreid 2001-03-03
1.用虚拟函数是按照他们声明的顺序进行调用,而不是方法的名称,这就是为什么COM在二进制上与语言无关的原因,凡是支持COM的语言,他们使用虚拟方法表布局是一致的
2,3,如果是保护的就会出错
回复
babysloth 2001-03-03
2 zzh
谢谢您的解答,不过我是说怎样避免这样带来的问题,而不是问您如何导出类。

2 wyzegg
的确一般都会有问题,而我关心的就是如何会没问题,什么情况下没问题。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告