我正在使用类似COM的界面实现DLL,并且我使用了以下提供的指南:
http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL?msg=5315303#xx5315303xx
&安培;&安培;
http://eli.thegreenplace.net/2011/09/16/exporting-c-classes-from-a-dll
通过导出工厂函数GetXyz,它返回对抽象的引用 接口结构如下:
struct IXYZ
{
virtual void foo(void) = 0;
virtual void destroy()=0;
}
这是由完整的类XyzImple实现的,
#define XYZAPI __declspec(dllexport)
XYZAPI IXYZ* GetXyz()
{
return new XyzImple(1,2,3);
}
//
// implementation of foo, jkl, zyx etc...
//
//Constructor
XyzImple::XyzImple(int a, int b, int c)
{
m_Zyx = new Zyx(a); // some ultra simple classes..
m_Jkl = new Jkl(b);
m_Inty = c;
}
// 'Destroyer'
XyzImple::destroy() // Called by client side code.
{
delete m_Zyx;
delete m_Jkl;
delete this; // I have seen this in tutorials..
}
DLL工厂函数调用一个动态分配的构造函数是否有任何问题,完全公开这是我的第一个DLL,我想要非常小心内存泄漏等。 请参阅'最佳做法'回答这个问题! 非常感谢!