我新建了一个MFC扩展DLL,加入对话框资源,在mydlg.h的class后加上AFX_EXT_CLASS,编译不通过,打不到IDD_DIALOG1,于是在stdafx.h中加入
#include "Resource.h",编译通过。
然后新建了一个单文档工程,复制上面的mydlg.h,dll和lib文件过来,在菜单的响应函数中加入:
CMyDlg dlg;
dlg.DoModal();
并在MainFrm.h中加入
#include "mydlg.h"
#pragma comment (lib,"MFCExDll.lib")
编译出错:
error C2065: 'IDD_DIALOG1' : undeclared identifier
error C2057: expected constant expression
这是怎以回事?

解决方案 »

  1.   

    1.CDialog的派生类中都有IDD_DIALOGXX的声明,你现在用的这个ID在你定义扩展类的工程的resource.h中。如果编译想通过,从MFC扩展DLL中把IDD_DIALOG1在resource.h中拷贝到你当前的单文档工程的resource.h中
    2.到处类尽量减少对其它头文件的依赖,除非你用到的这些类或者头文件是公共的,也就是其它地方也会引用的。否则,关联一大堆文件,导出类就没有意义了
      

  2.   

    谢谢,用你说的第一点解决了,怎样才能不改resource.h呢?