关于类的导出问题 当然不能导出类了,只能导出函数或是根据接口导出函数(COM)——我没有听说过从DLL或EXE中导出一般性质的类!导出需函数是为了保持接口的升级不会影响以前的接口的作用你还需要导出什么动态的成员函数???和动态的成员变量???(我有点不明白你的话) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 导出类肯定可以嘛,您没试过?class __declspec(dllexport) A{...};这样不是导出类???好象我只说了静态的成员函数和变量啊。 所有导出类都可以,你使用扩展DLL,支持MFC,然后再在类前加上宏AFX_EXT_CLASS就可以跟常规类使用了,在你要使用的工程中把这个类的头文件包括进去,并把它的LIB加入就可以了 2 zzh谢谢您的解答,不过我是说怎样避免这样带来的问题,而不是问您如何导出类。2 wyzegg的确一般都会有问题,而我关心的就是如何会没问题,什么情况下没问题。 1.用虚拟函数是按照他们声明的顺序进行调用,而不是方法的名称,这就是为什么COM在二进制上与语言无关的原因,凡是支持COM的语言,他们使用虚拟方法表布局是一致的2,3,如果是保护的就会出错 除了COM诸位就没有其他办法了?呵呵,看来200分给大家分了算了. 在Dll中可以导出函数,变量和类,导出类时如果成员变量有了修改,比如类型改变,或添加新的成员变量和删除成员变量,Exe在调用时会出问题修改导出函数的内容,只要名称,返回值,参数类型和个数不改变,Exe调用就没有问题 1:在这时最好所有的成员都是protected,该动通过接口函数来该2:dll的class一变,马上把ap引用的Lib也update3:注意虚函数,特别是析构函数4:VC6似有bug,装上SP3后可能会好一点,不行的话,用VC5 make DLL project吧 谢谢w8zz啦,只要注意更新lib,当然没有任何问题。我关心的是如何不更新lib而使得exe不会出问题,当然DLL里绝对保证只是扩充了。 大家不要上当,这家伙用C++Builder的!^_^ 只要所有成员函数为虚就不会有问题最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变 只要所有成员函数为虚就不会有问题最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变前提是接口固定 当然只变多不变少还有GOODHOPE,你这个用DELPHI的也来吵,一分都不给! 不固定可以使用类似Com的方法,得到增加的接口指针,应该不会有问题但是如果属性增加了会非法的,所以一般应该有一个保留的属性域 对,差不多了,到此为止了吧?如果没什么其他意见,晚上就来加分。看来是该用COM了,呵呵。 偶不要分的,那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的方法,得到增加的接口指针,应该不会有问题 但是如果属性增加了会非法的,所以一般应该有一个保留的属性域 > 给外部程序留接口是用dll还是静态库? 如何创建一个竖直浮动的工具条 转到定义处后怎么转回去? 关于界面的问题,高手帮帮忙 关于在对话框程序里获取低级键盘钩子 关于combox控件 谁可以给我一个完整的VC大型项目的代码? settimer有没有办法执行不定时的功能? WINDOWS编程与C++哪个比较实用? 如果解决一定高分送上! 怎么动态改变菜单项的状态栏显示? MFC里如何刷屏?
class __declspec(dllexport) A{...};
这样不是导出类???
好象我只说了静态的成员函数和变量啊。
谢谢您的解答,不过我是说怎样避免这样带来的问题,而不是问您如何导出类。2 wyzegg
的确一般都会有问题,而我关心的就是如何会没问题,什么情况下没问题。
2,3,如果是保护的就会出错
呵呵,看来200分给大家分了算了.
2:dll的class一变,马上把ap引用的Lib也update
3:注意虚函数,特别是析构函数
4:VC6似有bug,装上SP3后可能会好一点,不行的话,用VC5 make DLL project吧
我关心的是如何不更新lib而使得exe不会出问题,当然DLL里绝对保证只是扩充了。
最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变
最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变前提是接口固定
还有GOODHOPE,你这个用DELPHI的也来吵,一分都不给!
但是如果属性增加了会非法的,所以一般应该有一个保留的属性域
你要是用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的方法,得到增加的接口指针,应该不会有问题
但是如果属性增加了会非法的,所以一般应该有一个保留的属性域
>