各位大虾:
   我在MFC中使用appwizard生成了一个扩展的dll,然后
insert了一个对话框进去,名字为addsufix1。可是在编译的时候提示
error C2065: 'IDD_ADDSUFFIX' : undeclared identifier
IDD_ADDSUFFIX就是对话框的ID,我发现在resource.h文件中有定义。
于是我在.h文件中include resource.h,编译通过了。
  可是当我想调用的时候,在调用的的主程序的.h文件中申明了
扩展dll中的对话框的一个对象,然后再.cpp文件中调用
addsufix1->Create(IDD_ADDSUFFIX,this);执行的时候出错,dlgcore.cpp出错,初步判断是IDD_ADDSUFFIX的问题。  我觉得是不是dll中的IDD拿到主程序中不对呀???
   我应该怎么解决这个问题呢?谢谢!

解决方案 »

  1.   

    你可以把dll文件resource.h中的和对话框有关的id定义都考到addsufixl的头文件里。
    因为在dll里有一个resoure.h,exe里也有同样名字的文件,所以实际使用的是exe里的,所以发生错误。
    按你的用法,也可以先将dll里的resoure改为resource1.h,对话框的头函数包含它,但是这时你需要将这个resource1文件也加到exe目录下了。
      

  2.   

    你的DLL是MFC的么,如果是的话就不改有问题呀,还有就是在用他的时候加
    AFX_MANAGE_STATE(AfxGetStaticModuleState());如:
    int TestReturn()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState()); CTestDlg Dlg_test;
    if(IDOK == Dlg_test.DoModal())
    {
    return 1;
    }
    return 0;
    }
      

  3.   

    不行,还是出错,你看看D是我在dll中定义的对话框类TestexdlgDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall D::D(class CWnd *)" (??0D@@QAE@PAVCWnd@@@Z)
    Debug/Testexdlg.exe : fatal error LNK1120: 1 unresolved externals