我加了个对话框,在这个对话框里我用了我自己写的一个类。编译时出现链接错误。
何办????????到底怎么引用????
--------------------Configuration: sfz - Win32 Debug--------------------
Linking...
SfzjsbDlg.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CSzjsbList::GetRuntimeClass(void)const " (?GetRuntimeClass@CSzjsbList@@UBEPAUCRuntimeClass@@XZ)
SfzjsbDlg.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CSzjsb::GetRuntimeClass(void)const " (?GetRuntimeClass@CSzjsb@@UBEPAUCRuntimeClass@@XZ)
SfzjsbDlg.obj : error LNK2001: unresolved external symbol "class CArchive & __stdcall operator>>(class CArchive &,class CSzjsbList * &)" (??5@YGAAVCArchive@@AAV0@AAPAVCSzjsbList@@@Z)
Debug/sfz.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.sfz.exe - 4 error(s), 0 warning(s)

解决方案 »

  1.   

    你定义的CSzjsbList类应支持动态创建。在CSzjsbList的定义中加入
    DECLARE_DYNCREATE(...)宏   //记不清了(人在网吧,你自己找找有关资料吧)。
      

  2.   

    看样子,你的类要支持可序列化头文件中加入
    DECLARE_SERIAL(CSzjsbList)
    cpp文件加入
             IMPLEMENT_SERIAL(CSzjsbList,CObject,0);
      

  3.   

    假设你想用它来保存数据。class CMyDlg::public CDialog
    {
      COtherSerialObject m_DataObject;
      void SaveData();
    }
    void CMyDlg::SaveData()
    {
      CFileDialog FDlg(TRUE);
      if(FDlg.DoModel()==IDOK)
      {
        //得到文件名。
        CFile File(...)
        CArchive ar(&File);
        m_ObjectData.Serialize(&ar);
      }
    }//有MM找我聊天了,草草写到这里,大体思路相同,细节来望大家补充。
      

  4.   

    重载Doc里的Serialize(&ar)函数
      

  5.   

    在你引用别人的类的地方先把他的类进行申明,然后重载自己的对话框的Serialize(&ar)函数,然后再看引用的类中有头文件中有没有
    DECLARE_SERIAL(CSzjsbList)
    cpp文件中有没有
             IMPLEMENT_SERIAL(CSzjsbList,CObject,0);
    没有就加上