我在dll里面定义了一个类, CC2PDialog : public CDialog;
在应用程序中从改类继承下去后,编译没有问题,连接出现错误:
error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CC2PDialog::messageMap
是怎么回事情啊,如果没有消息映射就可以.

解决方案 »

  1.   

    我晕死,查了msdn,原来一定要用AFX_EXT_CLASS导出来啊,我一直是用的 __declspec( dllexport ),结果出问题了,仔细看看了消息映射宏的定义,明白了
      

  2.   

    AFX_EXT_CLASS是MFC定义的导出类的,__declspec( dllexport )可以用来导出变量和单个的函数
      

  3.   

    class __declspec(dllimport) CC2PDialog : public CDialog
    {
      ...
    };
      

  4.   

    我以前也遇到过这样的问题,所有的函数都能连接上,只有messageMap连不上!我也很郁闷,后来我发现我的本机上有多个该导出类的头文件,我删除了所有只保留了最新的那个,然后编译就可以了,哈哈~
    你遇到的问题也可能是这样引起的,你用AFX_EXT_CLASS在一个扩展Dll中导出一个类A,然后在另一个扩展Dll中使用它,这时就不能在第一个Dll中用AFX_EXT_CLASS来导出A了,如果是这样,请看http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_mutual_imports.asp