当然不能导出类了,只能导出函数或是根据接口导出函数(COM)——我没有听说过从DLL或EXE中导出一般性质的类!
导出需函数是为了保持接口的升级不会影响以前的接口的作用
你还需要导出什么动态的成员函数???和动态的成员变量???(我有点不明白你的话)

解决方案 »

  1.   

    导出类肯定可以嘛,您没试过?
    class __declspec(dllexport) A{...};
    这样不是导出类???
    好象我只说了静态的成员函数和变量啊。
      

  2.   

    所有导出类都可以,你使用扩展DLL,支持MFC,然后再在类前加上宏AFX_EXT_CLASS就可以跟常规类使用了,在你要使用的工程中把这个类的头文件包括进去,并把它的LIB加入就可以了
      

  3.   

    2 zzh
    谢谢您的解答,不过我是说怎样避免这样带来的问题,而不是问您如何导出类。2 wyzegg
    的确一般都会有问题,而我关心的就是如何会没问题,什么情况下没问题。
      

  4.   

    1.用虚拟函数是按照他们声明的顺序进行调用,而不是方法的名称,这就是为什么COM在二进制上与语言无关的原因,凡是支持COM的语言,他们使用虚拟方法表布局是一致的
    2,3,如果是保护的就会出错
      

  5.   

    除了COM诸位就没有其他办法了?
    呵呵,看来200分给大家分了算了.
      

  6.   

    在Dll中可以导出函数,变量和类,导出类时如果成员变量有了修改,比如类型改变,或添加新的成员变量和删除成员变量,Exe在调用时会出问题修改导出函数的内容,只要名称,返回值,参数类型和个数不改变,Exe调用就没有问题
      

  7.   

    1:在这时最好所有的成员都是protected,该动通过接口函数来该
    2:dll的class一变,马上把ap引用的Lib也update
    3:注意虚函数,特别是析构函数
    4:VC6似有bug,装上SP3后可能会好一点,不行的话,用VC5 make DLL project吧
      

  8.   

    谢谢w8zz啦,只要注意更新lib,当然没有任何问题。
    我关心的是如何不更新lib而使得exe不会出问题,当然DLL里绝对保证只是扩充了。
      

  9.   

    大家不要上当,这家伙用C++Builder的!^_^
      

  10.   

    只要所有成员函数为虚就不会有问题
    最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变
      

  11.   

    只要所有成员函数为虚就不会有问题
    最好是在DLL里面用一个静态函数来创建一个对象,exe通过指针调用其方法,最后再调dll里面的静态函数来释放对象。这样替换dll后exe根本不需要改变前提是接口固定
      

  12.   

    当然只变多不变少
    还有GOODHOPE,你这个用DELPHI的也来吵,一分都不给!
      

  13.   

    不固定可以使用类似Com的方法,得到增加的接口指针,应该不会有问题
    但是如果属性增加了会非法的,所以一般应该有一个保留的属性域
      

  14.   

    对,差不多了,到此为止了吧?如果没什么其他意见,晚上就来加分。看来是该用COM了,呵呵。
      

  15.   

    偶不要分的,那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的方法,得到增加的接口指针,应该不会有问题
       但是如果属性增加了会非法的,所以一般应该有一个保留的属性域 
        
    >