我现在创建Mfc 正规dll。在dll中我设计了几个类,有自己写的还有一些对话框类!现在我想在应用程序中调用它门,应该怎么做呢!请大侠给出详解! 

解决方案 »

  1.   

    使用__declspec(dllexport)定义和使用定义文件。    下面先讲使用__declspec(dllexport)的方法:将类定义改为:class __declspec(dllexport) CInDLL 就可以了。(译者:你也许不相信会有这么简单,我也不相信。:-) 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。    使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:在头文件中加入如下的代码:    #ifdef _CLASSINDLL
       #define CLASSINDLL_CLASS_DECL __declspec(dllexport)
      #else
       #define CLASSINDLL_CLASS_DECL __declspec(dllimport)
      #endif
    //将class __declspec(dllexport) CInDLL改为
      class CLASSINDLL_CLASS_DECL CInDLL  {   CInDLL();  ...  }    在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。 
       #define _CLASSINDLL  CInDLL::CInDLL()  {  }  ...    这样一来在使用这个类时就可以不做任何改动了.
      

  2.   

    用MFC扩展DLL,然后导出__declspec(dllexport) 对应的类,其他类中就可以调用对应的类了
    http://dev.yesky.com/90/2320590.shtml
      

  3.   

    3楼说得对, 要导出类还是用mfc扩展dll吧
      

  4.   

    windows dll, MFC 普通 dll 和MFC 扩展dll都可以导出类!
      

  5.   

    mfc常规dll一般情况下是不可以导出mfc类及其派生类的
      

  6.   

    写一个调用函数吧,
    void mydll()
    {
     CMyDialog dlg;
     dlg.DoModal();
    }