关于类的导出问题

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

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

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

总之任何想法,任何意见,请发表。
...全文
551 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
的确一般都会有问题,而我关心的就是如何会没问题,什么情况下没问题。
加载更多回复(4)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧