如提

解决方案 »

  1.   

    我建了扩展MFC DLL 在里面建了一个派生自dialog类,如何导出类?
      

  2.   

    class AFX_EXT_CLASS CChartCtrl   
    {
    在类的前面加上AFX_EXT_CLASS就可以了
      

  3.   

    我的类是
    class Name : public CDialog
    改成
    class AFX_EXT_CLASS Name : public CDialog
    对吗?
      

  4.   

    报error C2065: 'IDD_DIALOG1' : undeclared identifier错误
    在enum { IDD = IDD_DIALOG1 };处出错为何???
      

  5.   

    IDD = IDD_DIALOG1 为何出错?
      

  6.   

    一个解决方案是在调用时发送一个消息到DLL中,在DLL中调用对话框。 数据再可以用消息发回来
      

  7.   

    找不到IDD_DIALOG1是因为没包含资源文件,在头文件里加上:include "resource.h"普通DLL中也可导出类#ifdef DLLNAME_EXPORTS
    #define _DLL_EXT _declspec(dllexport)
    #else
    #define _DLL_EXT _declspec(dllimport)
    #endif然后这样写类声明:class _DLL_EXT AA
    {
      ....
    };
      

  8.   

    class __declspec(dllexport) CA  //该类用于导出接口
    {
    public:
    CA();
    virtual ~CA();
    virtual bool Initialize ();            
    virtual bool Start ();                 
    virtual bool Stop ();                  
    };
     CA* getca()
    {
      return new CA;
    }
      

  9.   

    还有个办法是:
    新建一个.DEF文件
    然后创建工程的MAP信息文件,在MAP文件中找到自己类的地址,写到DEF文件中去
    如:
     class CMath  
      {
      public:
                 int Add(int a,in b);
                 CMath();
                 virtual ~CMath();  };
    MAP文件信息:
     0001:00000080       ??0CMath@@QAE@XZ           10001080 f   Math.obj
     0001:000000c0       ??_ECMath@@UAEPAXI@Z       100010c0 f i Math.obj
     0001:000000c0       ??_GCMath@@UAEPAXI@Z       100010c0 f i Math.obj
     0001:00000130       ??1CMath@@UAE@XZ           10001130 f   Math.obj
     0001:00000170       ?Add@CMath@@QAEHHH@Z       10001170 f   Math.obj在DEF文件中加入:
     LIBRARY DefClass EXPORTS  
            ??0CMath@@QAE@XZ                         @1
           ??1CMath@@UAE@XZ               @2
          ?Add@CMath@@QAEHHH@Z     @3    
      

  10.   

    如何从动态链接库(DLL)中导出类
    http://hao.kjz.cn/xml/040917142352.xml在非MFC扩展Dll中导出class
    http://hao.kjz.cn/xml/040918160927.xml