扩展dll中如何导出类?请高手给各例子! 如提 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我建了扩展MFC DLL 在里面建了一个派生自dialog类,如何导出类? class AFX_EXT_CLASS CChartCtrl {在类的前面加上AFX_EXT_CLASS就可以了 我的类是class Name : public CDialog改成class AFX_EXT_CLASS Name : public CDialog对吗? 报error C2065: 'IDD_DIALOG1' : undeclared identifier错误在enum { IDD = IDD_DIALOG1 };处出错为何??? IDD = IDD_DIALOG1 为何出错? 一个解决方案是在调用时发送一个消息到DLL中,在DLL中调用对话框。 数据再可以用消息发回来 找不到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{ ....}; class __declspec(dllexport) CA //该类用于导出接口{public: CA(); virtual ~CA(); virtual bool Initialize (); virtual bool Start (); virtual bool Stop (); }; CA* getca(){ return new CA;} 还有个办法是:新建一个.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 如何从动态链接库(DLL)中导出类http://hao.kjz.cn/xml/040917142352.xml在非MFC扩展Dll中导出classhttp://hao.kjz.cn/xml/040918160927.xml COMBOX问题 可以调用CListCtrl::Scroll使控件里的内容滚动,其它控件没Scroll函数,怎样滚动? 如何枚举注册表指定项下的所有键及键值? 大家讨论一下,刚毕业在上海做程序一般能拿多少? 多线程com里传递对象到javascript的问题。 创建子窗口 型值点插值后有些地方不光滑,怎么办 如何得到发出trap pdu的时间 大文件的传输用 socket api 怎么实现 一个关于安全的问题 会API挂接的大侠请指教 读写UNICODE文件用C语言FILE * f可以实现,MFC如何做?例如..
{
在类的前面加上AFX_EXT_CLASS就可以了
class Name : public CDialog
改成
class AFX_EXT_CLASS Name : public CDialog
对吗?
在enum { IDD = IDD_DIALOG1 };处出错为何???
#define _DLL_EXT _declspec(dllexport)
#else
#define _DLL_EXT _declspec(dllimport)
#endif然后这样写类声明:class _DLL_EXT AA
{
....
};
{
public:
CA();
virtual ~CA();
virtual bool Initialize ();
virtual bool Start ();
virtual bool Stop ();
};
CA* getca()
{
return new CA;
}
新建一个.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
http://hao.kjz.cn/xml/040917142352.xml在非MFC扩展Dll中导出class
http://hao.kjz.cn/xml/040918160927.xml