关于Dll导出类的问题 (200分)

R

redcony

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我从Dll A1中导出一个类A,在Dll B1 中定义一个类B,B中包含A
在B的构造函数中用New申请一个A的对象,为什么释放B时出错?
DllB1是把Dll A1的Lib文件加入并包含h文件,主程序则静态链接B1
代码如下:
DLL A1.H
#ifdef BUILD_DLL2
#define _EXPORT_TYPE_DLL2 __declspec(dllexport)
#else
#define _EXPORT_TYPE_DLL2 __declspec(dllimport)
#endif
_EXPORT_TYPE_DLL2 struct CPoint
{
do
uble X;
do
uble Y;
do
uble Z;
CPoint();
~CPoint();
};
_EXPORT_TYPE_DLL2 struct CLine
{
CPoint begin
;
CPoint end;
char *Name;
CLine();
~CLine();
};
//cpp
CPoint::CPoint()
{
}
CPoint::~CPoint()
{
}

CLine::CLine()
{
;
}
CLine::~CLine()
{
;
}
//DLL B1
class Meta
{
public:
CLine *mLine;
Meta();
~Meta();
} ;
Meta::Meta()
{
mLine = new CLine;
}
Meta::~Meta()
{
delete mLine;
mLine = NULL;
}
我想知道的是在CB中用Dll导出类有那些注意事项,以及它的内存分配情况。
 
会不会是这样。
构造的是在DLL,返回的指针是在EXE是无效的。而释放是在EXE中进行。
在构造时传送一个已分配空间的指针给它。
 
要在运行库间传递对象,最好采用接口或者纯虚类。
 
要在运行库之间传递对象,最好采用接口。
 
版主,你真的要改变游戏规则了!!
这么一帮跟着你穷苦的命!
 
真的不明白,老兄你为什么不用COM!
 
顶部