扩展动态连接库中包含对话框资源时,对话框类的.h文件会有(enum { IDD = IDD_DIALOG }),当在另外一个工程中使用该DLL时必须把动态连接库的对话框类的.h文件包含到工程中,这时候enum { IDD = IDD_DIALOG }会产生编译错误!系统提示:不认识的标示符。请问该如何使扩展动态连接库中可以使用对话框????
以及在工程中如何使用这个动态连接库!

解决方案 »

  1.   

    不能去掉呀,去掉了对话框的构造函数CDialog(CMyDialog::IDD, pParent)中的IDD就不认识了!
      

  2.   

    不行的,编译好的动态连接库加入到另外一个测试工程中后,连接时出错!
    testDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall CMyDialog::CMyDialog(class CWnd *)" (??0CMyDialog@@QAE@PAVCWnd@@@Z)
      

  3.   

    看来CMyDialog::IDD是不能删除的,他指定了这个对话的资源,如果删掉它怎么和它的对话框关联起来?
      

  4.   

    你可能将构造函数CMyDialog::CMyDialog(CWnd *)删除了
      

  5.   

    CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
    //: CDialog(CMyDialog::IDD, pParent)
    {
    //{{AFX_DATA_INIT(CMyDialog)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    }请看,我绝对没有删除构造函数!
    我想知道,如果删除了CDialog(CMyDialog::IDD, pParent),对话框资源怎么和这个类管理起来?
      

  6.   

    能否做个简单(只需要非常简单的)包含对话框资源的DLL,然后再 做个测试工程显示这个DLL中的对话框!
    我这里多谢了!
      

  7.   

    trust me! 兄弟, 这个问题我遇到过.
    能看看你测试工程中包括的头文件吗? 你给出的是实现文件.
    头文件的作用只是给出类数据的布局, 删除CMyDialog::IDD没什么不可以
      

  8.   

    我给出的是我的DLL的实现部分,测试工程中包含了这个DlL中的多话框类的头文件,没有别的了!
      

  9.   

    #include "stdafx.h"
    #include "test.h"
    #include "testDlg.h"
    #include "MyDialog.h"   //DLL中的对话框的头文件
      

  10.   

    DlL实现部分的头文件不应做任何修改,
    COPY一个头文件, 修改、包含COPY的头文件
      

  11.   

    试过了,还是不行!
    能不能发个Demo给我,我看有些问题在这里说不清楚,也许这个问题对你来说根本不是一个问题,可是我现在就是调不通!
    所以还请你帮帮忙!
      

  12.   

    据说是装载资源时的控制权的问题,程序默认装载的是应用的资源,而不是dll的资源,所以即便你的dll中已经有资源,但是系统却看不到。具体怎么做,你只能查找一下相关的资料,我也不懂。
    我的处理方法是这样的:
    在应用里增加这个对话框资源,然后在你的dll里面包含这个头文件。就OK了。但是如果你的dll是要单独发布的,我就不知道该怎么办了。
      

  13.   

    EXE要使用DLL里的对话框,一般是令DLL启动对话,EXE只能通过结构指针与DLL交流。如下(代码在DLL导出函数里):
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    CMyDialog dlg(pString,pLength);
    dlg.DoModal();
    不推荏导出DLL里的对话框类,不利于封装。
      

  14.   

    在扩展DLL中有这样的规定:
     在扩展DLL中不能有CWINAPP的派生类(当然包括CDIALGO了)只能与用户程序中的CWINAPP的派生类进行交流。用户程序拥有消息循环。具体的请查看MSDN中索引《EXTENSION DLL》》另外如果你真的用DIALOG的话你可以使用正则DLL。要不然就写个WIN32DLL 同样可以实现。