【发布时间】:2010-12-09 00:06:12
【问题描述】:
我的 dll 中有一个抽象类。
class IBase {
protected:
virtual ~IBase() = 0;
public:
virtual void f() = 0;
};
我想在加载 dll 的 exe 文件中获取 IBase。
第一种方法是创建以下函数
IBase * CreateInterface();
并在IBase中添加虚函数Release()。
第二种方法是创建另一个函数
boost::shared_ptr<IBase> CreateInterface();
并且不需要Release() 函数。
问题。
1) 在第二种情况中,在dll(不是在exe文件中)调用析构函数和内存释放是真的吗?
2) 如果 exe 文件和 dll 使用不同的编译器(或不同的设置)编译,第二种情况是否能正常工作。
【问题讨论】:
标签: c++ dll boost abstract-class shared-ptr