如何将类对象(尤其是STL对象)传递给C++ DLL?
我的应用程序必须以DLL文件的形式与第三方插件交互,我无法控制这些插件构建的编译器.我知道STL对象没有保证ABI,我担心我的应用程序会导致不稳定.
我的dll中有一个抽象类.
class IBase {
protected:
virtual ~IBase() = 0;
public:
virtual void f() = 0;
};
Run Code Online (Sandbox Code Playgroud)
我想进入IBase加载DLL的exe文件.第一种方法是创建以下功能
IBase * CreateInterface();
Run Code Online (Sandbox Code Playgroud)
并添加虚拟函数Release()在IBase.
第二种方法是创建另一个功能
boost::shared_ptr<IBase> CreateInterface();
Run Code Online (Sandbox Code Playgroud)
并且不需要任何Release()功能.
问题.
1)在第二种情况下,在dll(而不是在exe文件中)中调用析构函数和内存释放是否正确?
2)如果使用不同的编译器(或不同的设置)编译exe-file和dll ,第二种情况是否能正常工作.