生成了一个MFC Extension DLL
在其中作了一个CListBox的派生控件
通过AFX_EXT_CLASS导出可是在主程序中生成他的派生类时,竟然无法LINK他所有的PULIC函数LIB文件已经加入参数中,而且其他的控件类还可以正常的在主程序的其他地方使用(不是作为父类使用)

解决方案 »

  1.   

    一般情况下exe是不会从DLL中派生类的,反过来倒是经常见到。
      

  2.   

    你是不是需要这个DLL基类的头文件?我一般是把DLL工程中它的头文件也包含到调用这个DLL的工程中,然后一起编译的。没出现过你说的情况。
      

  3.   

    不会把,头文件是否加到项目中应该没有关系,MFC的类不就不需要加吗?
      

  4.   

    不,当然是有关系的
    MFC的头文件在include目录已经自己加了,所以你不觉得
    没看过MFC自己把它include了吗?
      

  5.   

    什么嘛,头文件只要include就可以了,本来就不需要加到项目里
      

  6.   

    可是在主程序中生成他的派生类时,竟然无法LINK他所有的PULIC函数
    说明编译没有问题,LINK出问题,全部PUBLIC函数没有办法LINK
    是不是LIB没有加(你说加了,检查一下路径)
    我的都没有问题
      

  7.   

    LIB应该没有问题,因为该DLL中其他的控件类都可以正常使用
    只有被派生的类出现无法LINK的情况
      

  8.   

    在生成DLL是头文件的类定义是导出,
    但在使用.lib和.h文件是在H文件中应把该类定义为导入
      

  9.   

    谢谢各位
    现在Link已经没有问题了,不过有了新的问题:
    error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CFileListBox::messageMap" (?messageMap@CTssFileListBox@@1UAFX_MSGMAP@@B)好像是消息映射没有办法继承,如果
    BEGIN_MESSAGE_MAP(CTestListBox, CFileListBox)
    改为
    BEGIN_MESSAGE_MAP(CTestListBox, CListBox)
    就没有问题了不知道MFC库是怎么做到的?如何解决这个问题呢?